vxe-table 3.16.2 → 3.16.4

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.
Files changed (160) hide show
  1. package/es/grid/src/grid.js +2 -2
  2. package/es/index.css +1 -1
  3. package/es/index.min.css +1 -1
  4. package/es/locale/lang/ar-EG.js +19 -1
  5. package/es/locale/lang/de-DE.js +19 -1
  6. package/es/locale/lang/en-US.js +20 -2
  7. package/es/locale/lang/es-ES.js +19 -1
  8. package/es/locale/lang/fr-FR.js +19 -1
  9. package/es/locale/lang/hu-HU.js +19 -1
  10. package/es/locale/lang/hy-AM.js +18 -0
  11. package/es/locale/lang/id-ID.js +19 -1
  12. package/es/locale/lang/it-IT.js +19 -1
  13. package/es/locale/lang/ja-JP.js +19 -1
  14. package/es/locale/lang/ko-KR.js +19 -1
  15. package/es/locale/lang/ms-MY.js +19 -1
  16. package/es/locale/lang/nb-NO.js +19 -1
  17. package/es/locale/lang/pt-BR.js +19 -1
  18. package/es/locale/lang/ru-RU.js +19 -1
  19. package/es/locale/lang/th-TH.js +19 -1
  20. package/es/locale/lang/ug-CN.js +19 -1
  21. package/es/locale/lang/uk-UA.js +19 -1
  22. package/es/locale/lang/uz-UZ.js +19 -1
  23. package/es/locale/lang/vi-VN.js +19 -1
  24. package/es/locale/lang/zh-CHT.js +19 -1
  25. package/es/locale/lang/zh-CN.js +18 -0
  26. package/es/style.css +1 -1
  27. package/es/style.min.css +1 -1
  28. package/es/table/module/filter/panel.js +5 -1
  29. package/es/table/src/methods.js +14 -4
  30. package/es/table/style.css +1 -0
  31. package/es/table/style.min.css +1 -1
  32. package/es/ui/index.js +2 -2
  33. package/es/ui/src/log.js +1 -1
  34. package/es/vxe-table/style.css +1 -0
  35. package/es/vxe-table/style.min.css +1 -1
  36. package/lib/grid/src/grid.js +2 -2
  37. package/lib/grid/src/grid.min.js +1 -1
  38. package/lib/index.css +1 -1
  39. package/lib/index.min.css +1 -1
  40. package/lib/index.umd.js +42 -9
  41. package/lib/index.umd.min.js +1 -1
  42. package/lib/locale/lang/ar-EG.js +19 -1
  43. package/lib/locale/lang/ar-EG.min.js +1 -1
  44. package/lib/locale/lang/ar-EG.umd.js +19 -1
  45. package/lib/locale/lang/de-DE.js +19 -1
  46. package/lib/locale/lang/de-DE.min.js +1 -1
  47. package/lib/locale/lang/de-DE.umd.js +19 -1
  48. package/lib/locale/lang/en-US.js +20 -2
  49. package/lib/locale/lang/en-US.min.js +1 -1
  50. package/lib/locale/lang/en-US.umd.js +20 -2
  51. package/lib/locale/lang/es-ES.js +19 -1
  52. package/lib/locale/lang/es-ES.min.js +1 -1
  53. package/lib/locale/lang/es-ES.umd.js +19 -1
  54. package/lib/locale/lang/fr-FR.js +19 -1
  55. package/lib/locale/lang/fr-FR.min.js +1 -1
  56. package/lib/locale/lang/fr-FR.umd.js +19 -1
  57. package/lib/locale/lang/hu-HU.js +19 -1
  58. package/lib/locale/lang/hu-HU.min.js +1 -1
  59. package/lib/locale/lang/hu-HU.umd.js +19 -1
  60. package/lib/locale/lang/hy-AM.js +18 -0
  61. package/lib/locale/lang/hy-AM.min.js +1 -1
  62. package/lib/locale/lang/hy-AM.umd.js +18 -0
  63. package/lib/locale/lang/id-ID.js +19 -1
  64. package/lib/locale/lang/id-ID.min.js +1 -1
  65. package/lib/locale/lang/id-ID.umd.js +19 -1
  66. package/lib/locale/lang/it-IT.js +19 -1
  67. package/lib/locale/lang/it-IT.min.js +1 -1
  68. package/lib/locale/lang/it-IT.umd.js +19 -1
  69. package/lib/locale/lang/ja-JP.js +19 -1
  70. package/lib/locale/lang/ja-JP.min.js +1 -1
  71. package/lib/locale/lang/ja-JP.umd.js +19 -1
  72. package/lib/locale/lang/ko-KR.js +19 -1
  73. package/lib/locale/lang/ko-KR.min.js +1 -1
  74. package/lib/locale/lang/ko-KR.umd.js +19 -1
  75. package/lib/locale/lang/ms-MY.js +19 -1
  76. package/lib/locale/lang/ms-MY.min.js +1 -1
  77. package/lib/locale/lang/ms-MY.umd.js +19 -1
  78. package/lib/locale/lang/nb-NO.js +19 -1
  79. package/lib/locale/lang/nb-NO.min.js +1 -1
  80. package/lib/locale/lang/nb-NO.umd.js +19 -1
  81. package/lib/locale/lang/pt-BR.js +19 -1
  82. package/lib/locale/lang/pt-BR.min.js +1 -1
  83. package/lib/locale/lang/pt-BR.umd.js +19 -1
  84. package/lib/locale/lang/ru-RU.js +19 -1
  85. package/lib/locale/lang/ru-RU.min.js +1 -1
  86. package/lib/locale/lang/ru-RU.umd.js +19 -1
  87. package/lib/locale/lang/th-TH.js +19 -1
  88. package/lib/locale/lang/th-TH.min.js +1 -1
  89. package/lib/locale/lang/th-TH.umd.js +19 -1
  90. package/lib/locale/lang/ug-CN.js +19 -1
  91. package/lib/locale/lang/ug-CN.min.js +1 -1
  92. package/lib/locale/lang/ug-CN.umd.js +19 -1
  93. package/lib/locale/lang/uk-UA.js +19 -1
  94. package/lib/locale/lang/uk-UA.min.js +1 -1
  95. package/lib/locale/lang/uk-UA.umd.js +19 -1
  96. package/lib/locale/lang/uz-UZ.js +19 -1
  97. package/lib/locale/lang/uz-UZ.min.js +1 -1
  98. package/lib/locale/lang/uz-UZ.umd.js +19 -1
  99. package/lib/locale/lang/vi-VN.js +19 -1
  100. package/lib/locale/lang/vi-VN.min.js +1 -1
  101. package/lib/locale/lang/vi-VN.umd.js +19 -1
  102. package/lib/locale/lang/zh-CHT.js +19 -1
  103. package/lib/locale/lang/zh-CHT.min.js +1 -1
  104. package/lib/locale/lang/zh-CHT.umd.js +19 -1
  105. package/lib/locale/lang/zh-CN.js +18 -0
  106. package/lib/locale/lang/zh-CN.min.js +1 -1
  107. package/lib/locale/lang/zh-CN.umd.js +18 -0
  108. package/lib/style.css +1 -1
  109. package/lib/style.min.css +1 -1
  110. package/lib/table/module/filter/panel.js +5 -1
  111. package/lib/table/module/filter/panel.min.js +1 -1
  112. package/lib/table/src/methods.js +14 -3
  113. package/lib/table/src/methods.min.js +1 -1
  114. package/lib/table/style/style.css +1 -0
  115. package/lib/table/style/style.min.css +1 -1
  116. package/lib/ui/index.js +2 -2
  117. package/lib/ui/index.min.js +1 -1
  118. package/lib/ui/src/log.js +1 -1
  119. package/lib/ui/src/log.min.js +1 -1
  120. package/lib/vxe-table/style/style.css +1 -0
  121. package/lib/vxe-table/style/style.min.css +1 -1
  122. package/package.json +1 -1
  123. package/packages/grid/src/grid.ts +7 -7
  124. package/packages/locale/lang/ar-EG.ts +19 -1
  125. package/packages/locale/lang/de-DE.ts +19 -1
  126. package/packages/locale/lang/en-US.ts +20 -2
  127. package/packages/locale/lang/es-ES.ts +19 -1
  128. package/packages/locale/lang/fr-FR.ts +19 -1
  129. package/packages/locale/lang/hu-HU.ts +19 -1
  130. package/packages/locale/lang/hy-AM.ts +18 -0
  131. package/packages/locale/lang/id-ID.ts +19 -1
  132. package/packages/locale/lang/it-IT.ts +19 -1
  133. package/packages/locale/lang/ja-JP.ts +19 -1
  134. package/packages/locale/lang/ko-KR.ts +19 -1
  135. package/packages/locale/lang/ms-MY.ts +19 -1
  136. package/packages/locale/lang/nb-NO.ts +19 -1
  137. package/packages/locale/lang/pt-BR.ts +19 -1
  138. package/packages/locale/lang/ru-RU.ts +19 -1
  139. package/packages/locale/lang/th-TH.ts +19 -1
  140. package/packages/locale/lang/ug-CN.ts +19 -1
  141. package/packages/locale/lang/uk-UA.ts +19 -1
  142. package/packages/locale/lang/uz-UZ.ts +19 -1
  143. package/packages/locale/lang/vi-VN.ts +19 -1
  144. package/packages/locale/lang/zh-CHT.ts +19 -1
  145. package/packages/locale/lang/zh-CN.ts +18 -0
  146. package/packages/table/module/custom/panel.ts +11 -11
  147. package/packages/table/module/export/export-panel.ts +5 -6
  148. package/packages/table/module/export/import-panel.ts +3 -4
  149. package/packages/table/module/filter/panel.ts +5 -1
  150. package/packages/table/src/methods.ts +14 -5
  151. package/packages/table/src/table.ts +5 -5
  152. package/packages/toolbar/src/toolbar.ts +11 -11
  153. package/packages/ui/index.ts +1 -1
  154. package/styles/components/table.scss +1 -0
  155. /package/es/{iconfont.1752196450144.ttf → iconfont.1752646203441.ttf} +0 -0
  156. /package/es/{iconfont.1752196450144.woff → iconfont.1752646203441.woff} +0 -0
  157. /package/es/{iconfont.1752196450144.woff2 → iconfont.1752646203441.woff2} +0 -0
  158. /package/lib/{iconfont.1752196450144.ttf → iconfont.1752646203441.ttf} +0 -0
  159. /package/lib/{iconfont.1752196450144.woff → iconfont.1752646203441.woff} +0 -0
  160. /package/lib/{iconfont.1752196450144.woff2 → iconfont.1752646203441.woff2} +0 -0
@@ -1 +1 @@
1
- Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=void 0;var _ui=require("../../../ui"),_utils=require("../../../ui/src/utils"),_vn=require("../../../ui/src/vn");let{getI18n,getIcon,renderer,globalMixins}=_ui.VxeUI;function renderOptions(l,i,e,t){var r=l.$xeTable;let a=l.filterStore,{column:s,multiple:n,maxHeight:o}=a;var c=s?s.slots:null,c=c?c.filter:null,p=Object.assign({},r._currFilterParams,{$panel:l,$table:r}),t=t?t.renderTableFilter||t.renderFilter:null;return c?[i("div",{class:"vxe-table--filter-template",style:o?{maxHeight:o+"px"}:{}},r.callSlot(c,p,i))]:t?[i("div",{class:"vxe-table--filter-template",style:o?{maxHeight:o+"px"}:{}},(0,_vn.getSlotVNs)(t.call(r,i,e,p)))]:(c=n?a.isAllSelected:!a.options.some(e=>e._checked),t=n&&a.isIndeterminate,[i("ul",{class:"vxe-table--filter-header"},[i("li",{class:["vxe-table--filter-option",{"is--checked":c,"is--indeterminate":t}],attrs:{title:getI18n(n?"vxe.table.allTitle":"vxe.table.allFilter")},on:{click:e=>{l.changeAllOption(e,!a.isAllSelected)}}},(n?[i("span",{class:["vxe-checkbox--icon",t?getIcon().TABLE_CHECKBOX_INDETERMINATE:c?getIcon().TABLE_CHECKBOX_CHECKED:getIcon().TABLE_CHECKBOX_UNCHECKED]})]:[]).concat([i("span",{class:"vxe-checkbox--label"},getI18n("vxe.table.allFilter"))]))]),i("ul",{class:"vxe-table--filter-body",style:o?{maxHeight:o+"px"}:{}},a.options.map(t=>{var e=t._checked;return i("li",{class:["vxe-table--filter-option",{"is--checked":e}],attrs:{title:t.label},on:{click:e=>{l.changeOption(e,!t._checked,t)}}},(n?[i("span",{class:["vxe-checkbox--icon",e?getIcon().TABLE_CHECKBOX_CHECKED:getIcon().TABLE_CHECKBOX_UNCHECKED]})]:[]).concat([i("span",{class:"vxe-checkbox--label"},(0,_utils.formatText)(t.label,1))]))}))])}function renderFooter(e,t){var l=e.filterStore,{column:i,multiple:r}=l,a=e.$xeTable.computeFilterOpts,s=e.computeHasCheckOption,i=i.filterRender,i=(0,_utils.isEnableConf)(i)?renderer.get(i.name):null,s=!s&&!l.isAllSelected&&!l.isIndeterminate;return r&&(!i||!1!==i.showTableFilterFooter&&!1!==i.showFilterFooter&&!1!==i.isFooter)?[t("div",{class:"vxe-table--filter-footer"},[t("button",{class:{"is--disabled":s},attrs:{disabled:s},on:{click:e.confirmFilter}},a.confirmButtonText||getI18n("vxe.table.confirmFilter")),t("button",{on:{click:e.resetFilter}},a.resetButtonText||getI18n("vxe.table.resetFilter"))])]:[]}var _default=exports.default={name:"VxeTableFilterPanel",mixins:[globalMixins.sizeMixin],props:{filterStore:Object},inject:{$xeTable:{default:null}},computed:{computeHasCheckOption(){var e=this.filterStore;return e&&e.options.some(e=>e.checked)}},mounted(){var e=this.$xeTable.computeFilterOpts.transfer,t=this.$refs.refElem;e&&t&&document.body.appendChild(t)},beforeDestroy(){var e=this.$refs.refElem;e&&e.parentNode&&e.parentNode.removeChild(e)},render(e){var t=this,l=t.$xeTable,i=l,r=t.filterStore,{visible:a,multiple:s,column:n}=r,o=n?n.filterRender:null,c=(0,_utils.isEnableConf)(o)?renderer.get(o.name):null,p=c?c.tableFilterClassName||c.filterClassName:"",i=Object.assign({},i._currFilterParams,{$panel:t,$table:l}),d=l,u=t.computeSize,l=l.computeFilterOpts.destroyOnClose;return e("div",{ref:"refElem",class:["vxe-table--filter-wrapper","filter--prevent-default",c&&c.className?c.className:"",(0,_utils.getClass)(p,i),{["size--"+u]:u,"is--animat":d.animat,"is--multiple":s,"is--active":a}],style:r.style},r.visible&&(!l||a)&&n?renderOptions(t,e,o,c).concat(renderFooter(t,e)):[])},methods:{filterCheckAllEvent(e,t){var l=this.filterStore;l.options.forEach(e=>{e._checked=t,e.checked=t}),l.isAllSelected=t,l.isIndeterminate=!1},changeRadioOption(e,t,l){var i=this.$parent,r=this.filterStore;r.options.forEach(e=>{e._checked=!1}),l._checked=t,i.checkFilterOptions(),this.confirmFilter(e)},changeMultipleOption(e,t,l){var i=this.$parent;l._checked=t,i.checkFilterOptions()},changeAllOption(e,t){this.filterStore.multiple?this.filterCheckAllEvent(e,t):this.resetFilter(e)},changeOption(e,t,l){this.filterStore.multiple?this.changeMultipleOption(e,t,l):this.changeRadioOption(e,t,l)},confirmFilter(e){this.$parent.handleFilterConfirmFilter(e)},resetFilter(e){this.$parent.handleFilterResetFilter(e)}}};
1
+ Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=void 0;var _ui=require("../../../ui"),_utils=require("../../../ui/src/utils"),_vn=require("../../../ui/src/vn"),_log=require("../../../ui/src/log");let{getI18n,getIcon,renderer,globalMixins}=_ui.VxeUI;function renderOptions(l,i,e,t){var r=l.$xeTable;let a=l.filterStore,{column:n,multiple:s,maxHeight:o}=a;var c=n?n.slots:null,c=c?c.filter:null,p=Object.assign({},r._currFilterParams,{$panel:l,$table:r}),t=t?t.renderTableFilter||t.renderFilter:null;return c?[i("div",{class:"vxe-table--filter-template",style:o?{maxHeight:o+"px"}:{}},r.callSlot(c,p,i))]:t?[i("div",{class:"vxe-table--filter-template",style:o?{maxHeight:o+"px"}:{}},(0,_vn.getSlotVNs)(t.call(r,i,e,p)))]:(c=s?a.isAllSelected:!a.options.some(e=>e._checked),t=s&&a.isIndeterminate,[i("ul",{class:"vxe-table--filter-header"},[i("li",{class:["vxe-table--filter-option",{"is--checked":c,"is--indeterminate":t}],attrs:{title:getI18n(s?"vxe.table.allTitle":"vxe.table.allFilter")},on:{click:e=>{l.changeAllOption(e,!a.isAllSelected)}}},(s?[i("span",{class:["vxe-checkbox--icon",t?getIcon().TABLE_CHECKBOX_INDETERMINATE:c?getIcon().TABLE_CHECKBOX_CHECKED:getIcon().TABLE_CHECKBOX_UNCHECKED]})]:[]).concat([i("span",{class:"vxe-checkbox--label"},getI18n("vxe.table.allFilter"))]))]),i("ul",{class:"vxe-table--filter-body",style:o?{maxHeight:o+"px"}:{}},a.options.map(t=>{var e=t._checked;return i("li",{class:["vxe-table--filter-option",{"is--checked":e}],attrs:{title:t.label},on:{click:e=>{l.changeOption(e,!t._checked,t)}}},(s?[i("span",{class:["vxe-checkbox--icon",e?getIcon().TABLE_CHECKBOX_CHECKED:getIcon().TABLE_CHECKBOX_UNCHECKED]})]:[]).concat([i("span",{class:"vxe-checkbox--label"},(0,_utils.formatText)(t.label,1))]))}))])}function renderFooter(e,t){var l=e.filterStore,{column:i,multiple:r}=l,a=e.$xeTable.computeFilterOpts,n=e.computeHasCheckOption,i=i.filterRender,i=(0,_utils.isEnableConf)(i)?renderer.get(i.name):null,n=!n&&!l.isAllSelected&&!l.isIndeterminate;return r&&(!i||!1!==i.showTableFilterFooter&&!1!==i.showFilterFooter&&!1!==i.isFooter)?[t("div",{class:"vxe-table--filter-footer"},[t("button",{class:{"is--disabled":n},attrs:{disabled:n},on:{click:e.confirmFilter}},a.confirmButtonText||getI18n("vxe.table.confirmFilter")),t("button",{on:{click:e.resetFilter}},a.resetButtonText||getI18n("vxe.table.resetFilter"))])]:[]}var _default=exports.default={name:"VxeTableFilterPanel",mixins:[globalMixins.sizeMixin],props:{filterStore:Object},inject:{$xeTable:{default:null}},computed:{computeHasCheckOption(){var e=this.filterStore;return e&&e.options.some(e=>e.checked)}},mounted(){var e=this.$xeTable.computeFilterOpts.transfer,t=this.$refs.refElem;e&&t&&document.body.appendChild(t)},beforeDestroy(){var e=this.$refs.refElem;e&&e.parentNode&&e.parentNode.removeChild(e)},render(e){var t=this,l=t.$xeTable,i=l,r=t.filterStore,{visible:a,multiple:n,column:s}=r,o=s?s.filterRender:null,c=(0,_utils.isEnableConf)(o)?renderer.get(o.name):null,p=c?c.tableFilterClassName||c.filterClassName:"",i=Object.assign({},i._currFilterParams,{$panel:t,$table:l}),u=l,d=t.computeSize,l=l.computeFilterOpts.destroyOnClose;return e("div",{ref:"refElem",class:["vxe-table--filter-wrapper","filter--prevent-default",c&&c.className?c.className:"",(0,_utils.getClass)(p,i),{["size--"+d]:d,"is--animat":u.animat,"is--multiple":n,"is--active":a}],style:r.style},r.visible&&(!l||a)&&s?renderOptions(t,e,o,c).concat(renderFooter(t,e)):[])},methods:{filterCheckAllEvent(e,t){var l=this.filterStore;l.options.forEach(e=>{e._checked=t,e.checked=t}),l.isAllSelected=t,l.isIndeterminate=!1},changeRadioOption(e,t,l){var i=this.$parent,r=this.filterStore;r.options.forEach(e=>{e._checked=!1}),l._checked=t,i.checkFilterOptions(),this.confirmFilter(e)},changeMultipleOption(e,t,l){var i=this.$parent;l._checked=t,i.checkFilterOptions()},changeAllOption(e,t){this.filterStore.multiple?this.filterCheckAllEvent(e,t):this.resetFilter(e)},changeOption(e,t,l){this.filterStore.multiple?this.changeMultipleOption(e,t,l):this.changeRadioOption(e,t,l)},confirmFilter(e){var t=this.$parent;e||(0,_log.warnLog)("vxe.error.delFunc",["confirmFilter","saveFilterPanelByEvent"]),t.handleFilterConfirmFilter(e||new Event("click"))},resetFilter(e){this.$parent.handleFilterResetFilter(e)}}};
@@ -7975,6 +7975,7 @@ const Methods = {
7975
7975
  const checkboxOpts = $xeTable.computeCheckboxOpts;
7976
7976
  const {
7977
7977
  checkField,
7978
+ indeterminateField,
7978
7979
  checkStrictly,
7979
7980
  checkMethod
7980
7981
  } = checkboxOpts;
@@ -8014,6 +8015,10 @@ const Methods = {
8014
8015
  if (childList && childList.length && !childRowMaps[rowid]) {
8015
8016
  childRowMaps[rowid] = 1;
8016
8017
  childRowList.unshift([row, rowid, childList]);
8018
+ } else {
8019
+ if (indeterminateField) {
8020
+ _xeUtils.default.set(row, indeterminateField, false);
8021
+ }
8017
8022
  }
8018
8023
  }, {
8019
8024
  children: transform ? mapChildrenField : childrenField
@@ -8026,7 +8031,7 @@ const Methods = {
8026
8031
  let sLen = 0; // 已选
8027
8032
  let hLen = 0; // 半选
8028
8033
  let vLen = 0; // 有效子行
8029
- const cLen = childList.length; // 有效子行
8034
+ const cLen = childList.length; // 子行
8030
8035
  childList.forEach(checkMethod ? item => {
8031
8036
  const childRowid = handleGetRowId(item);
8032
8037
  const isSelect = checkField ? _xeUtils.default.get(item, checkField) : selectCheckboxMaps[childRowid];
@@ -8079,6 +8084,9 @@ const Methods = {
8079
8084
  if (checkField) {
8080
8085
  _xeUtils.default.set(row, checkField, isSelected);
8081
8086
  }
8087
+ if (indeterminateField) {
8088
+ _xeUtils.default.set(row, indeterminateField, halfSelect);
8089
+ }
8082
8090
  if (isSelected) {
8083
8091
  if (!checkField) {
8084
8092
  selectCheckboxMaps[rowid] = row;
@@ -10574,7 +10582,8 @@ const Methods = {
10574
10582
  const reactData = $xeTable;
10575
10583
  const internalData = $xeTable;
10576
10584
  const {
10577
- tableFullData
10585
+ tableFullData,
10586
+ scrollYStore
10578
10587
  } = internalData;
10579
10588
  const expandOpts = $xeTable.computeExpandOpts;
10580
10589
  const {
@@ -10582,10 +10591,12 @@ const Methods = {
10582
10591
  } = expandOpts;
10583
10592
  const expList = $xeTable.getRowExpandRecords();
10584
10593
  internalData.rowExpandedMaps = {};
10585
- reactData.rowExpandedFlag++;
10586
10594
  if (reserve) {
10587
10595
  tableFullData.forEach(row => handleRowExpandReserve($xeTable, row, false));
10588
10596
  }
10597
+ reactData.rowExpandedFlag++;
10598
+ scrollYStore.startIndex = 0;
10599
+ scrollYStore.endIndex = 1;
10589
10600
  return $xeTable.$nextTick().then(() => {
10590
10601
  if (expList.length) {
10591
10602
  return handleLazyRecalculate($xeTable, true, true, true);