@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.esm.js CHANGED
@@ -444,7 +444,7 @@ function getLookupListView(refObjectConfig) {
444
444
  * @Author: baozhoutao@steedos.com
445
445
  * @Date: 2022-05-23 09:53:08
446
446
  * @LastEditors: 殷亮辉 yinlianghui@hotoa.com
447
- * @LastEditTime: 2023-08-29 15:04:39
447
+ * @LastEditTime: 2023-09-19 14:38:39
448
448
  * @Description:
449
449
  */
450
450
 
@@ -624,9 +624,13 @@ async function getLookupTpl(field, ctx){
624
624
  }
625
625
 
626
626
  function getSwitchTpl(field){
627
+ let fieldDataStrTpl = `data._display.${field.name}`;
628
+ if(field.isTableField){
629
+ fieldDataStrTpl = `data.${field.name}`;
630
+ }
627
631
  return `<% if (data.${field.name}) { %>
628
- <span class="slds-icon_container slds-icon-utility-check slds-current-color" title="<%=data._display.${field.name}%>">
629
- <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>
632
+ <span class="slds-icon_container slds-icon-utility-check slds-current-color" title="<%=${fieldDataStrTpl}%>">
633
+ <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>
630
634
  </span>
631
635
  <% } %>`
632
636
  }
@@ -7329,7 +7333,7 @@ async function convertSFieldToAmisField(field, readonly, ctx) {
7329
7333
  label: subField.label,
7330
7334
  quickEdit: readonly ? false : gridSub
7331
7335
  };
7332
- if(subField.type === 'lookup'){
7336
+ if(["lookup", "boolean", "toggle"].indexOf(subField.type) > -1){
7333
7337
  gridItemSchema.type = gridSub.type;
7334
7338
  gridItemSchema.tpl = gridSub.tpl;
7335
7339
  }
@@ -8295,11 +8299,10 @@ async function getTableOperation(ctx){
8295
8299
  }
8296
8300
 
8297
8301
  async function getTableSchema$1(fields, options){
8298
- let isLookup = options && options.isLookup;
8299
- let hiddenColumnOperation = options && options.hiddenColumnOperation;
8300
8302
  if(!options){
8301
8303
  options = {};
8302
8304
  }
8305
+ let { isLookup, hiddenColumnOperation } = options;
8303
8306
  let columns = [];
8304
8307
  let useMobileColumns = options.formFactor === 'SMALL' || ["split"].indexOf(options.displayAs) > -1;
8305
8308
  if(isLookup){
@@ -8311,6 +8314,7 @@ async function getTableSchema$1(fields, options){
8311
8314
  }
8312
8315
  else {
8313
8316
  columns = await getTableColumns(fields, options);
8317
+
8314
8318
  if(!isLookup && !hiddenColumnOperation){
8315
8319
  columns.push(await getTableOperation(options));
8316
8320
  }
@@ -9615,6 +9619,161 @@ async function getObjectCalendar(objectSchema, calendarOptions, options) {
9615
9619
  return amisSchema;
9616
9620
  }
9617
9621
 
9622
+ /******************************************************************************
9623
+ Copyright (c) Microsoft Corporation.
9624
+
9625
+ Permission to use, copy, modify, and/or distribute this software for any
9626
+ purpose with or without fee is hereby granted.
9627
+
9628
+ THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
9629
+ REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
9630
+ AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
9631
+ INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
9632
+ LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
9633
+ OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
9634
+ PERFORMANCE OF THIS SOFTWARE.
9635
+ ***************************************************************************** */
9636
+
9637
+ var __assign = function() {
9638
+ __assign = Object.assign || function __assign(t) {
9639
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
9640
+ s = arguments[i];
9641
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];
9642
+ }
9643
+ return t;
9644
+ };
9645
+ return __assign.apply(this, arguments);
9646
+ };
9647
+
9648
+ /**
9649
+ * 将例如像 a.b.c 或 a[1].b 的字符串转换为路径数组
9650
+ *
9651
+ * @param string 要转换的字符串
9652
+ */
9653
+ var keyToPath = function (string) {
9654
+ var result = [];
9655
+ if (string.charCodeAt(0) === '.'.charCodeAt(0)) {
9656
+ result.push('');
9657
+ }
9658
+ string.replace(new RegExp('[^.[\\]]+|\\[(?:([^"\'][^[]*)|(["\'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|$))', 'g'), function (match, expression, quote, subString) {
9659
+ var key = match;
9660
+ if (quote) {
9661
+ key = subString.replace(/\\(\\)?/g, '$1');
9662
+ }
9663
+ else if (expression) {
9664
+ key = expression.trim();
9665
+ }
9666
+ result.push(key);
9667
+ return '';
9668
+ });
9669
+ return result;
9670
+ };
9671
+
9672
+ // 方便取值的时候能够把上层的取到,但是获取的时候不会全部把所有的数据获取到。
9673
+ function createObject(superProps, props, properties) {
9674
+ if (superProps && Object.isFrozen(superProps)) {
9675
+ superProps = cloneObject(superProps);
9676
+ }
9677
+ var obj = superProps
9678
+ ? Object.create(superProps, __assign(__assign({}, properties), { __super: {
9679
+ value: superProps,
9680
+ writable: false,
9681
+ enumerable: false
9682
+ } }))
9683
+ : Object.create(Object.prototype, properties);
9684
+ props &&
9685
+ isObject(props) &&
9686
+ Object.keys(props).forEach(function (key) { return (obj[key] = props[key]); });
9687
+ return obj;
9688
+ }
9689
+ function cloneObject(target, persistOwnProps) {
9690
+ if (persistOwnProps === void 0) { persistOwnProps = true; }
9691
+ var obj = target && target.__super
9692
+ ? Object.create(target.__super, {
9693
+ __super: {
9694
+ value: target.__super,
9695
+ writable: false,
9696
+ enumerable: false
9697
+ }
9698
+ })
9699
+ : Object.create(Object.prototype);
9700
+ persistOwnProps &&
9701
+ target &&
9702
+ Object.keys(target).forEach(function (key) { return (obj[key] = target[key]); });
9703
+ return obj;
9704
+ }
9705
+ function extendObject(target, src, persistOwnProps) {
9706
+ if (persistOwnProps === void 0) { persistOwnProps = true; }
9707
+ var obj = cloneObject(target, persistOwnProps);
9708
+ src && Object.keys(src).forEach(function (key) { return (obj[key] = src[key]); });
9709
+ return obj;
9710
+ }
9711
+ function isObject(obj) {
9712
+ var typename = typeof obj;
9713
+ return (obj &&
9714
+ typename !== 'string' &&
9715
+ typename !== 'number' &&
9716
+ typename !== 'boolean' &&
9717
+ typename !== 'function' &&
9718
+ !Array.isArray(obj));
9719
+ }
9720
+ function setVariable(data, key, value, convertKeyToPath) {
9721
+ data = data || {};
9722
+ if (key in data) {
9723
+ data[key] = value;
9724
+ return;
9725
+ }
9726
+ var parts = convertKeyToPath !== false ? keyToPath(key) : [key];
9727
+ var last = parts.pop();
9728
+ while (parts.length) {
9729
+ var key_1 = parts.shift();
9730
+ if (isPlainObject(data[key_1])) {
9731
+ data = data[key_1] = __assign({}, data[key_1]);
9732
+ }
9733
+ else if (Array.isArray(data[key_1])) {
9734
+ data[key_1] = data[key_1].concat();
9735
+ data = data[key_1];
9736
+ }
9737
+ else if (data[key_1]) {
9738
+ // throw new Error(`目标路径不是纯对象,不能覆盖`);
9739
+ // 强行转成对象
9740
+ data[key_1] = {};
9741
+ data = data[key_1];
9742
+ }
9743
+ else {
9744
+ data[key_1] = {};
9745
+ data = data[key_1];
9746
+ }
9747
+ }
9748
+ data[last] = value;
9749
+ }
9750
+ function deleteVariable(data, key) {
9751
+ if (!data) {
9752
+ return;
9753
+ }
9754
+ else if (data.hasOwnProperty(key)) {
9755
+ delete data[key];
9756
+ return;
9757
+ }
9758
+ var parts = keyToPath(key);
9759
+ var last = parts.pop();
9760
+ while (parts.length) {
9761
+ var key_2 = parts.shift();
9762
+ if (isPlainObject(data[key_2])) {
9763
+ data = data[key_2] = __assign({}, data[key_2]);
9764
+ }
9765
+ else if (data[key_2]) {
9766
+ throw new Error("\u76EE\u6807\u8DEF\u5F84\u4E0D\u662F\u7EAF\u5BF9\u8C61\uFF0C\u4E0D\u80FD\u4FEE\u6539");
9767
+ }
9768
+ else {
9769
+ break;
9770
+ }
9771
+ }
9772
+ if (data && data.hasOwnProperty && data.hasOwnProperty(last)) {
9773
+ delete data[last];
9774
+ }
9775
+ }
9776
+
9618
9777
  /*
9619
9778
  * @Author: baozhoutao@steedos.com
9620
9779
  * @Date: 2022-05-26 16:02:08
@@ -9855,9 +10014,30 @@ function getBulkActions(objectSchema){
9855
10014
  ]
9856
10015
  }
9857
10016
 
10017
+ async function getCrudSchemaWithDataFilter(crud, options = {}){
10018
+ const { crudDataFilter, amisData, env } = options;
10019
+ let onCrudDataFilter = options.onCrudDataFilter;
10020
+ if (!onCrudDataFilter && typeof crudDataFilter === 'string') {
10021
+ onCrudDataFilter = new Function(
10022
+ 'crud',
10023
+ 'env',
10024
+ 'data',
10025
+ crudDataFilter
10026
+ );
10027
+ }
10028
+
10029
+ try {
10030
+ onCrudDataFilter && (crud = await onCrudDataFilter(crud, env, amisData) || crud);
10031
+ } catch (e) {
10032
+ console.warn(e);
10033
+ }
10034
+ return crud;
10035
+ }
10036
+
9858
10037
  async function getObjectCRUD(objectSchema, fields, options){
9859
10038
  // console.time('getObjectCRUD');
9860
- const { top, perPage, showDisplayAs = false, displayAs, crudClassName = "" } = options;
10039
+ const { top, perPage, showDisplayAs = false, displayAs, crudClassName = "",
10040
+ crudDataFilter, onCrudDataFilter, amisData, env } = options;
9861
10041
  const nonpaged = objectSchema.paging && objectSchema.paging.enabled === false;
9862
10042
  const isTreeObject = objectSchema.enable_tree;
9863
10043
  const bulkActions = getBulkActions(objectSchema);
@@ -9898,6 +10078,14 @@ async function getObjectCRUD(objectSchema, fields, options){
9898
10078
  filterVisible: options.filterVisible
9899
10079
  });
9900
10080
 
10081
+ options.amisData = createObject(options.amisData, {
10082
+ objectName: objectSchema.name,
10083
+ // _id: null,
10084
+ recordPermissions: objectSchema.permissions,
10085
+ uiSchema: objectSchema,
10086
+ // loaded: false //crud接收适配器中设置为true,否则就是刷新浏览器第一次加载
10087
+ });
10088
+
9901
10089
 
9902
10090
  let body = null;
9903
10091
  const id = `listview_${objectSchema.name}`;
@@ -9923,7 +10111,12 @@ async function getObjectCRUD(objectSchema, fields, options){
9923
10111
  if(objectSchema.name === 'organizations'){
9924
10112
  labelFieldName = 'name';
9925
10113
  }
9926
- const table = await getTableSchema$1(fields, Object.assign({idFieldName: objectSchema.idFieldName, labelFieldName: labelFieldName, permissions:objectSchema.permissions,enable_inline_edit:objectSchema.enable_inline_edit}, options));
10114
+ let tableOptions = Object.assign({
10115
+ idFieldName: objectSchema.idFieldName, labelFieldName: labelFieldName,
10116
+ permissions:objectSchema.permissions,enable_inline_edit:objectSchema.enable_inline_edit
10117
+ }, options);
10118
+ tableOptions.amisData = createObject(options.amisData || {}, {}).__super;
10119
+ const table = await getTableSchema$1(fields, tableOptions);
9927
10120
  delete table.mode;
9928
10121
  //image与avatar需要在提交修改时特别处理
9929
10122
  const imageNames = ___default.compact(___default.map(___default.filter(fields, (field) => ["image","avatar"].includes(field.type)), 'name'));
@@ -9983,9 +10176,9 @@ async function getObjectCRUD(objectSchema, fields, options){
9983
10176
  requestAdaptor: quickSaveApiRequestAdaptor,
9984
10177
  },
9985
10178
  rowClassNameExpr: options.rowClassNameExpr
9986
- },
9987
- bodyProps,
9988
- );
10179
+ }, bodyProps);
10180
+
10181
+ body = await getCrudSchemaWithDataFilter(body, { crudDataFilter, onCrudDataFilter, amisData, env });
9989
10182
  }
9990
10183
 
9991
10184
  const defaults = options.defaults;
@@ -10020,16 +10213,10 @@ async function getObjectCRUD(objectSchema, fields, options){
10020
10213
  return {
10021
10214
  type: 'service',
10022
10215
  className: '',
10023
- //目前crud的service层id不认用户自定义id,只支持默认规则id
10216
+ //目前crud的service层id不认用户自定义id,只支持默认规则id,许多地方的格式都写死了service_listview_${objectname}
10024
10217
  id: `service_${id}`,
10025
10218
  name: `page`,
10026
- data: {
10027
- objectName: objectSchema.name,
10028
- // _id: null,
10029
- recordPermissions: objectSchema.permissions,
10030
- uiSchema: objectSchema,
10031
- // loaded: false //crud接收适配器中设置为true,否则就是刷新浏览器第一次加载
10032
- },
10219
+ data: options.amisData,
10033
10220
  body: body
10034
10221
  }
10035
10222
  }
@@ -10681,7 +10868,7 @@ async function getRelatedListSchema(
10681
10868
  * @Author: baozhoutao@steedos.com
10682
10869
  * @Date: 2022-07-05 15:55:39
10683
10870
  * @LastEditors: 殷亮辉 yinlianghui@hotoa.com
10684
- * @LastEditTime: 2023-09-14 13:57:32
10871
+ * @LastEditTime: 2023-09-15 09:04:49
10685
10872
  * @Description:
10686
10873
  */
10687
10874
 
@@ -11014,7 +11201,9 @@ async function getListSchema(
11014
11201
  "adaptor": listView.adaptor,
11015
11202
  "headerToolbarItems": ctx.headerToolbarItems,
11016
11203
  "filterVisible": ctx.filterVisible,
11017
- "rowClassNameExpr": ctx.rowClassNameExpr
11204
+ "rowClassNameExpr": ctx.rowClassNameExpr,
11205
+ "crudDataFilter": ctx.crudDataFilter,
11206
+ "onCrudDataFilter": ctx.onCrudDataFilter
11018
11207
  };
11019
11208
  // console.log(`getListSchema===>`,amisSchema)
11020
11209
  return {
@@ -11117,7 +11306,7 @@ async function getTableSchema(
11117
11306
  fields = fields.concat(extraFields);
11118
11307
  }
11119
11308
 
11120
- const amisSchema = await getObjectCRUD(uiSchema, fields, {
11309
+ let crudOptions = {
11121
11310
  tabId: objectName,
11122
11311
  appId: appName,
11123
11312
  objectName: objectName,
@@ -11126,8 +11315,9 @@ async function getTableSchema(
11126
11315
  sort,
11127
11316
  headerToolbarItems: ctx.headerToolbarItems,
11128
11317
  buttons: await getListViewItemButtons(uiSchema, ctx)
11129
- });
11130
- console.log('getTableSchema====>amisSchema', amisSchema);
11318
+ };
11319
+ crudOptions.amisData = createObject(ctx.amisData || {}, {}).__super;
11320
+ const amisSchema = await getObjectCRUD(uiSchema, fields, crudOptions);
11131
11321
  // console.timeEnd('getTableSchema');
11132
11322
  return {
11133
11323
  uiSchema,
@@ -11911,161 +12101,6 @@ const registerRemoteAssets = async (assetUrls)=>{
11911
12101
  }
11912
12102
  };
11913
12103
 
11914
- /******************************************************************************
11915
- Copyright (c) Microsoft Corporation.
11916
-
11917
- Permission to use, copy, modify, and/or distribute this software for any
11918
- purpose with or without fee is hereby granted.
11919
-
11920
- THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
11921
- REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
11922
- AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
11923
- INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
11924
- LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
11925
- OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
11926
- PERFORMANCE OF THIS SOFTWARE.
11927
- ***************************************************************************** */
11928
-
11929
- var __assign = function() {
11930
- __assign = Object.assign || function __assign(t) {
11931
- for (var s, i = 1, n = arguments.length; i < n; i++) {
11932
- s = arguments[i];
11933
- for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];
11934
- }
11935
- return t;
11936
- };
11937
- return __assign.apply(this, arguments);
11938
- };
11939
-
11940
- /**
11941
- * 将例如像 a.b.c 或 a[1].b 的字符串转换为路径数组
11942
- *
11943
- * @param string 要转换的字符串
11944
- */
11945
- var keyToPath = function (string) {
11946
- var result = [];
11947
- if (string.charCodeAt(0) === '.'.charCodeAt(0)) {
11948
- result.push('');
11949
- }
11950
- string.replace(new RegExp('[^.[\\]]+|\\[(?:([^"\'][^[]*)|(["\'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|$))', 'g'), function (match, expression, quote, subString) {
11951
- var key = match;
11952
- if (quote) {
11953
- key = subString.replace(/\\(\\)?/g, '$1');
11954
- }
11955
- else if (expression) {
11956
- key = expression.trim();
11957
- }
11958
- result.push(key);
11959
- return '';
11960
- });
11961
- return result;
11962
- };
11963
-
11964
- // 方便取值的时候能够把上层的取到,但是获取的时候不会全部把所有的数据获取到。
11965
- function createObject(superProps, props, properties) {
11966
- if (superProps && Object.isFrozen(superProps)) {
11967
- superProps = cloneObject(superProps);
11968
- }
11969
- var obj = superProps
11970
- ? Object.create(superProps, __assign(__assign({}, properties), { __super: {
11971
- value: superProps,
11972
- writable: false,
11973
- enumerable: false
11974
- } }))
11975
- : Object.create(Object.prototype, properties);
11976
- props &&
11977
- isObject(props) &&
11978
- Object.keys(props).forEach(function (key) { return (obj[key] = props[key]); });
11979
- return obj;
11980
- }
11981
- function cloneObject(target, persistOwnProps) {
11982
- if (persistOwnProps === void 0) { persistOwnProps = true; }
11983
- var obj = target && target.__super
11984
- ? Object.create(target.__super, {
11985
- __super: {
11986
- value: target.__super,
11987
- writable: false,
11988
- enumerable: false
11989
- }
11990
- })
11991
- : Object.create(Object.prototype);
11992
- persistOwnProps &&
11993
- target &&
11994
- Object.keys(target).forEach(function (key) { return (obj[key] = target[key]); });
11995
- return obj;
11996
- }
11997
- function extendObject(target, src, persistOwnProps) {
11998
- if (persistOwnProps === void 0) { persistOwnProps = true; }
11999
- var obj = cloneObject(target, persistOwnProps);
12000
- src && Object.keys(src).forEach(function (key) { return (obj[key] = src[key]); });
12001
- return obj;
12002
- }
12003
- function isObject(obj) {
12004
- var typename = typeof obj;
12005
- return (obj &&
12006
- typename !== 'string' &&
12007
- typename !== 'number' &&
12008
- typename !== 'boolean' &&
12009
- typename !== 'function' &&
12010
- !Array.isArray(obj));
12011
- }
12012
- function setVariable(data, key, value, convertKeyToPath) {
12013
- data = data || {};
12014
- if (key in data) {
12015
- data[key] = value;
12016
- return;
12017
- }
12018
- var parts = convertKeyToPath !== false ? keyToPath(key) : [key];
12019
- var last = parts.pop();
12020
- while (parts.length) {
12021
- var key_1 = parts.shift();
12022
- if (isPlainObject(data[key_1])) {
12023
- data = data[key_1] = __assign({}, data[key_1]);
12024
- }
12025
- else if (Array.isArray(data[key_1])) {
12026
- data[key_1] = data[key_1].concat();
12027
- data = data[key_1];
12028
- }
12029
- else if (data[key_1]) {
12030
- // throw new Error(`目标路径不是纯对象,不能覆盖`);
12031
- // 强行转成对象
12032
- data[key_1] = {};
12033
- data = data[key_1];
12034
- }
12035
- else {
12036
- data[key_1] = {};
12037
- data = data[key_1];
12038
- }
12039
- }
12040
- data[last] = value;
12041
- }
12042
- function deleteVariable(data, key) {
12043
- if (!data) {
12044
- return;
12045
- }
12046
- else if (data.hasOwnProperty(key)) {
12047
- delete data[key];
12048
- return;
12049
- }
12050
- var parts = keyToPath(key);
12051
- var last = parts.pop();
12052
- while (parts.length) {
12053
- var key_2 = parts.shift();
12054
- if (isPlainObject(data[key_2])) {
12055
- data = data[key_2] = __assign({}, data[key_2]);
12056
- }
12057
- else if (data[key_2]) {
12058
- throw new Error("\u76EE\u6807\u8DEF\u5F84\u4E0D\u662F\u7EAF\u5BF9\u8C61\uFF0C\u4E0D\u80FD\u4FEE\u6539");
12059
- }
12060
- else {
12061
- break;
12062
- }
12063
- }
12064
- if (data && data.hasOwnProperty && data.hasOwnProperty(last)) {
12065
- delete data[last];
12066
- }
12067
- }
12068
-
12069
12104
  /*
12070
12105
  * @Author: baozhoutao@steedos.com
12071
12106
  * @Date: 2022-12-17 17:03:40