@gipisistemas/ngx-core 1.0.25 → 1.0.27

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.
@@ -99,7 +99,7 @@
99
99
  width: 100% !important;
100
100
  background-color: $white-100 !important;
101
101
 
102
- @include breakpoints.tablet-view {
102
+ @include breakpoints.compact-view {
103
103
  max-height: 100% !important;
104
104
  }
105
105
 
@@ -20,7 +20,7 @@
20
20
  padding: 0.4rem 0;
21
21
  width: 100%;
22
22
 
23
- @include media.tablet-view {
23
+ @include media.compact-view {
24
24
  gap: 3.2rem;
25
25
  padding: 0.6rem 0;
26
26
  }
@@ -51,16 +51,18 @@
51
51
  gap: 0.4rem;
52
52
  max-width: 14rem;
53
53
  max-height: 2rem;
54
+ min-width: 0;
54
55
  padding: 0.2rem 0.8rem;
55
56
  border-radius: 0.6rem;
56
57
  background-color: #e0e1e2;
57
58
  font-size: 1.2rem;
58
59
  color: $font-color;
59
60
  font-weight: 600;
60
- flex-shrink: 0;
61
+ flex: 0 1 auto;
61
62
  }
62
63
 
63
64
  .g-select-value-chip-label {
65
+ flex: 1 1 auto;
64
66
  overflow: hidden;
65
67
  text-overflow: ellipsis;
66
68
  white-space: nowrap;
@@ -79,6 +81,7 @@
79
81
  background: transparent;
80
82
  color: $font-color;
81
83
  cursor: pointer;
84
+ flex-shrink: 0;
82
85
 
83
86
  > span {
84
87
  font-size: 1.4rem;
@@ -91,17 +94,6 @@
91
94
  }
92
95
  }
93
96
 
94
- .g-select-value-chip-ellipsis {
95
- display: inline-flex;
96
- align-items: center;
97
- justify-content: center;
98
- min-width: 2.4rem;
99
- padding: 0 0.6rem;
100
- font-size: $font-size;
101
- color: $font-color;
102
- flex-shrink: 0;
103
- }
104
-
105
97
  .select-input-multiple-hidden {
106
98
  display: none;
107
99
  }
@@ -704,7 +704,8 @@ class StringUtil {
704
704
  }
705
705
  }
706
706
  /**
707
- * Trunca uma string para um tamanho máximo especificado e adiciona um sufixo (por padrão, '...') caso o limite seja ultrapassado.
707
+ * Trunca uma string para um tamanho máximo especificado e adiciona um sufixo (por padrão, '...')
708
+ * caso o limite seja ultrapassado.
708
709
  *
709
710
  * @param inp A string que será truncada.
710
711
  * @param maxLength O tamanho máximo da string antes do truncamento. (padrão é 50)
@@ -1414,9 +1415,9 @@ class ArrayUtil {
1414
1415
 
1415
1416
  class CssUtil {
1416
1417
  static { this.BREAKPOINT_MOBILE_PX = 639.98; }
1417
- static { this.BREAKPOINT_MOBILE = '(max-width: 639.98px)'; }
1418
- static { this.BREAKPOINT_TABLET = '(min-width: 640px) and (max-width: 1279.98px)'; }
1419
- static { this.BREAKPOINT_DESKTOP = '(min-width: 1280px)'; }
1418
+ static { this.BREAKPOINT_MOBILE = '(max-width: 767.98px)'; }
1419
+ static { this.BREAKPOINT_TABLET = '(min-width: 768px) and (max-width: 1366.98px)'; }
1420
+ static { this.BREAKPOINT_DESKTOP = '(min-width: 1367px)'; }
1420
1421
  static { this.BREAKPOINTS = {
1421
1422
  sm: this.BREAKPOINT_MOBILE,
1422
1423
  md: this.BREAKPOINT_TABLET,
@@ -1829,7 +1830,8 @@ class CurrencyUtil {
1829
1830
  * @param inp Número a ser formatado.
1830
1831
  * @param options Configurações de formatação:
1831
1832
  * - `digitsInfo` (opcional): Define o formato dos dígitos, como `1.2-2` (mínimo 1 inteiro, 2 casas decimais).
1832
- * - `isPercent` (opcional): Se `true`, formata como porcentagem (ex: `0.5` → `50%`); caso contrário, como moeda (`R$`).
1833
+ * - `isPercent` (opcional): Se `true`, formata como porcentagem (ex: `0.5` → `50%`); caso contrário,
1834
+ * como moeda (`R$`).
1833
1835
  *
1834
1836
  * @returns Uma string com o número formatado como moeda ou porcentagem.
1835
1837
  */
@@ -2167,17 +2169,25 @@ class DocumentUtil {
2167
2169
  return index === input.length - 1;
2168
2170
  }
2169
2171
  /**
2170
- * Verifica se um valor é considerado vazio.
2171
- * @param inp O valor a ser verificado.
2172
- * @returns O valor sem formatação.
2172
+ * Remove caracteres de formatação de um CPF/CNPJ.
2173
+ *
2174
+ * Caso o valor contenha letras, mantém apenas caracteres alfanuméricos.
2175
+ * Caso contrário, mantém apenas números.
2176
+ *
2177
+ * @param value O valor que terá a formatação removida.
2178
+ * @returns O valor sem caracteres de formatação.
2179
+ *
2173
2180
  * @example
2174
- * DocumentUtil.isEmpty('123-123'); // Retorna `123123`.
2181
+ * DocumentUtil.clearFormat('00.123.123/0001-12'); // Retorna: '00123123000112'
2182
+ * DocumentUtil.clearFormat('XH.BYE.J7E/0001-67'); // Retorna: 'XHBYEJ7E000167'
2175
2183
  */
2176
2184
  static clearFormat(value) {
2177
2185
  if (StringUtil.isEmpty(value)) {
2178
2186
  return '';
2179
2187
  }
2180
- return value.replace(/\D/g, '');
2188
+ return /[a-zA-Z]/.test(value)
2189
+ ? value.replace(/[^a-zA-Z0-9]/g, '')
2190
+ : value.replace(/\D/g, '');
2181
2191
  }
2182
2192
  /**
2183
2193
  * Formata um CPF.
@@ -2267,97 +2277,132 @@ class DocumentUtil {
2267
2277
  return true;
2268
2278
  }
2269
2279
  /**
2270
- * Formata um CNPJ.
2271
- * @param cnpj O CNPJ a ser formatado.
2272
- * @param pad Se `true`, o CNPJ será preenchido com zeros à esquerda.
2273
- * @returns O CNPJ formatado.
2280
+ * Formata um CNPJ numérico ou alfanumérico.
2281
+ *
2282
+ * A função remove automaticamente caracteres de formatação antes de aplicar
2283
+ * a máscara padrão de CNPJ: `00.000.000/0000-00`.
2284
+ *
2285
+ * Também suporta:
2286
+ * - CNPJ alfanumérico;
2287
+ * - preenchimento automático com zeros à esquerda (`pad`);
2288
+ * - formatação parcial para utilização em campos de digitação (`allowPartial`).
2289
+ *
2290
+ * Quando `allowPartial` estiver ativado, a máscara será aplicada
2291
+ * gradualmente conforme a quantidade de caracteres informados.
2292
+ *
2293
+ * Caso `allowPartial` esteja desativado, apenas valores com 14 caracteres
2294
+ * serão formatados. Caso contrário, será retornada uma string vazia.
2295
+ *
2296
+ * @param cnpj O CNPJ que será formatado.
2297
+ * @param options Opções de formatação.
2298
+ * @param options.pad Define se o valor deve ser preenchido com zeros à esquerda até atingir 14 caracteres.
2299
+ * @param options.allowPartial Define se a máscara parcial deve ser aplicada durante a digitação.
2300
+ *
2301
+ * @returns O CNPJ formatado ou uma string vazia caso o valor seja inválido.
2302
+ *
2274
2303
  * @example
2275
- * DocumentUtil.formatCnpj('00123123000112'); // Retorna `00.123.123/0001-12`.
2276
- * DocumentUtil.formatCnpj('123123000112', true); // Retorna `00.123.123/0001-12`.
2304
+ * DocumentUtil.formatCnpj('12345678000190'); // Retorna: '12.345.678/0001-90'
2305
+ * DocumentUtil.formatCnpj('12ABC3450001XX'); // Retorna: '12.ABC.345/0001-XX'
2306
+ * DocumentUtil.formatCnpj('1234567890', { pad: true }); // Retorna: '00.001.234/5678-90'
2307
+ * DocumentUtil.formatCnpj('12ABC345', { allowPartial: true }); // Retorna: '12.ABC.345'
2308
+ * DocumentUtil.formatCnpj('123'); // Retorna: ''
2277
2309
  */
2278
- static formatCnpj(cnpj, pad) {
2279
- let digits = NumberUtil.onlyNumbers(cnpj);
2310
+ static formatCnpj(cnpj, options) {
2311
+ const pad = options?.pad ?? false;
2312
+ const allowPartial = options?.allowPartial ?? false;
2313
+ let cleanCnpj = this.clearFormat(cnpj).toUpperCase();
2280
2314
  if (pad) {
2281
- digits = digits.padStart(14, '0');
2315
+ cleanCnpj = cleanCnpj.padStart(14, '0');
2282
2316
  }
2283
- const DOT_INDEXES = [1, 4];
2284
- const SLASH_INDEXES = [7];
2285
- const HYPHEN_INDEXES = [11];
2286
- return digits
2287
- .slice(0, 14)
2288
- .split('')
2289
- .reduce((acc, digit, index) => {
2290
- const result = `${acc}${digit}`;
2291
- if (!this._isLastChar(index, digits)) {
2292
- if (DOT_INDEXES.includes(index))
2293
- return `${result}.`;
2294
- if (SLASH_INDEXES.includes(index))
2295
- return `${result}/`;
2296
- if (HYPHEN_INDEXES.includes(index))
2297
- return `${result}-`;
2317
+ cleanCnpj = cleanCnpj.slice(0, 14);
2318
+ const size = cleanCnpj.length;
2319
+ if (allowPartial) {
2320
+ if (size <= 2) {
2321
+ return cleanCnpj;
2298
2322
  }
2299
- return result;
2300
- }, '');
2323
+ if (size <= 5) {
2324
+ return `${cleanCnpj.slice(0, 2)}.${cleanCnpj.slice(2)}`;
2325
+ }
2326
+ if (size <= 8) {
2327
+ return `${cleanCnpj.slice(0, 2)}.${cleanCnpj.slice(2, 5)}.${cleanCnpj.slice(5)}`;
2328
+ }
2329
+ if (size <= 12) {
2330
+ return `${cleanCnpj.slice(0, 2)}.${cleanCnpj.slice(2, 5)}.${cleanCnpj.slice(5, 8)}/${cleanCnpj.slice(8)}`;
2331
+ }
2332
+ }
2333
+ else if (size !== 14) {
2334
+ return '';
2335
+ }
2336
+ return cleanCnpj.replace(/(.{2})(.{3})(.{3})(.{4})(.{1,2})/, '$1.$2.$3/$4-$5');
2301
2337
  }
2302
2338
  /**
2303
- * Verifica se um CNPJ é válido.
2304
- * @param cnpj O CNPJ a ser verificado.
2305
- * @returns `true` se o CNPJ for válido, caso contrário, `false`.
2339
+ * Valida um CNPJ numérico ou alfanumérico.
2340
+ *
2341
+ * A função aceita CNPJ com ou sem máscara, remove os caracteres de formatação
2342
+ * e valida o dígito verificador conforme a regra oficial baseada no valor ASCII
2343
+ * do caractere subtraído de 48 (`charCodeAt(0) - 48`).
2344
+ *
2345
+ * Regras aplicadas:
2346
+ * - aceita CNPJ numérico e alfanumérico;
2347
+ * - aceita valores com máscara, como `12.345.678/0001-90`;
2348
+ * - aceita letras minúsculas, convertendo internamente para maiúsculas;
2349
+ * - exige exatamente 14 caracteres após a limpeza;
2350
+ * - exige que os 2 últimos caracteres sejam dígitos verificadores numéricos;
2351
+ * - rejeita sequências inválidas repetidas, como `00000000000000`, `11111111111111`, `AAAAAAAAAAAA00`, entre outras;
2352
+ * - rejeita caracteres não permitidos.
2353
+ *
2354
+ * @param cnpj O CNPJ que será validado.
2355
+ * @returns `true` se o CNPJ for válido, caso contrário `false`.
2356
+ *
2306
2357
  * @example
2307
- * DocumentUtil.isValidCnpj('12.345.678/0001-09'); // Retorna `true`.
2308
- * DocumentUtil.isValidCnpj('12345678000109'); // Retorna `true`.
2309
- * DocumentUtil.isValidCnpj('1234567800010'); // Retorna `false`.
2310
- * DocumentUtil.isValidCnpj('123456780001090'); // Retorna `false`.
2358
+ * DocumentUtil.isValidCnpj('12.345.678/0001-90'); // Retorna: true ou false conforme os dígitos verificadores.
2359
+ * DocumentUtil.isValidCnpj('12ABC3450001XX'); // Retorna: false, pois os dois últimos caracteres devem ser números.
2360
+ * DocumentUtil.isValidCnpj('AAAAAAAAAAAA00'); // Retorna: false.
2311
2361
  */
2312
2362
  static isValidCnpj(cnpj) {
2313
2363
  if (StringUtil.isEmpty(cnpj)) {
2314
2364
  return false;
2315
2365
  }
2316
- cnpj = NumberUtil.onlyNumbers(cnpj);
2317
- if (StringUtil.isEmpty(cnpj) ||
2318
- cnpj.length !== 14 ||
2319
- cnpj === '00000000000000' ||
2320
- cnpj === '11111111111111' ||
2321
- cnpj === '22222222222222' ||
2322
- cnpj === '33333333333333' ||
2323
- cnpj === '44444444444444' ||
2324
- cnpj === '55555555555555' ||
2325
- cnpj === '66666666666666' ||
2326
- cnpj === '77777777777777' ||
2327
- cnpj === '88888888888888' ||
2328
- cnpj === '99999999999999') {
2366
+ if (/[^A-Z0-9./-]/i.test(cnpj)) {
2329
2367
  return false;
2330
2368
  }
2331
- let length = cnpj.length - 2;
2332
- let numbers = cnpj.substring(0, length);
2333
- const digits = cnpj.substring(length);
2334
- let sum = 0;
2335
- let pos = length - 7;
2336
- for (let i = length; i >= 1; i--) {
2337
- sum += +numbers.charAt(length - i) * pos--;
2338
- if (pos < 2) {
2339
- pos = 9;
2340
- }
2369
+ const cleanCnpj = this.clearFormat(cnpj).toUpperCase();
2370
+ if (!/^[A-Z0-9]{12}\d{2}$/.test(cleanCnpj)) {
2371
+ return false;
2341
2372
  }
2342
- let resultado = sum % 11 < 2 ? 0 : 11 - (sum % 11);
2343
- if (resultado !== +digits.charAt(0)) {
2373
+ if (/^([A-Z0-9])\1{13}$/.test(cleanCnpj)) {
2344
2374
  return false;
2345
2375
  }
2346
- length = length + 1;
2347
- numbers = cnpj.substring(0, length);
2348
- sum = 0;
2349
- pos = length - 7;
2350
- for (let i = length; i >= 1; i--) {
2351
- sum += +numbers.charAt(length - i) * pos--;
2352
- if (pos < 2) {
2353
- pos = 9;
2354
- }
2376
+ if (/^([A-Z0-9])\1{11}\d{2}$/.test(cleanCnpj)) {
2377
+ return false;
2355
2378
  }
2356
- resultado = sum % 11 < 2 ? 0 : 11 - (sum % 11);
2357
- if (resultado !== +digits.charAt(1)) {
2379
+ let size = 12;
2380
+ let numbers = cleanCnpj.substring(0, size);
2381
+ const digits = cleanCnpj.substring(size);
2382
+ let sum = 0;
2383
+ let weight = 2;
2384
+ for (let i = size - 1; i >= 0; i--) {
2385
+ const charValue = numbers.charCodeAt(i) - 48;
2386
+ sum += charValue * weight;
2387
+ weight = weight === 9 ? 2 : weight + 1;
2388
+ }
2389
+ let remainder = sum % 11;
2390
+ let result = remainder < 2 ? 0 : 11 - remainder;
2391
+ if (result !== parseInt(digits.charAt(0), 10)) {
2358
2392
  return false;
2359
2393
  }
2360
- return true;
2394
+ size = 13;
2395
+ numbers = cleanCnpj.substring(0, size);
2396
+ sum = 0;
2397
+ weight = 2;
2398
+ for (let i = size - 1; i >= 0; i--) {
2399
+ const charValue = numbers.charCodeAt(i) - 48;
2400
+ sum += charValue * weight;
2401
+ weight = weight === 9 ? 2 : weight + 1;
2402
+ }
2403
+ remainder = sum % 11;
2404
+ result = remainder < 2 ? 0 : 11 - remainder;
2405
+ return result === parseInt(digits.charAt(1), 10);
2361
2406
  }
2362
2407
  /**
2363
2408
  * Formata um CEP.
@@ -4151,7 +4196,7 @@ class BaseCrudService extends BaseService {
4151
4196
  * deleteAll(['123e4567-e89b-12d3-a456-426614174000', '987e6543-e21b-12d3-a456-426614174001'])
4152
4197
  * .subscribe(isDeleted => console.log(isDeleted));
4153
4198
  */
4154
- deleteAll(idList, version) {
4199
+ deleteAll(idList, version = 'v2') {
4155
4200
  for (const uuid of idList) {
4156
4201
  if (!UUIDUtil.isValid(uuid)) {
4157
4202
  return of(false);
@@ -5480,7 +5525,7 @@ class BaseListComponent extends BaseComponent {
5480
5525
  cancel: () => this.loading.set(false),
5481
5526
  });
5482
5527
  }
5483
- deleteAllRegister(idList, permission, fetchAgain = true, version) {
5528
+ deleteAllRegister(idList, permission, fetchAgain = true, version = 'v2') {
5484
5529
  try {
5485
5530
  idList = this.handleEntityIdList(idList);
5486
5531
  if (ArrayUtil.isEmpty(idList)) {
@@ -14338,12 +14383,6 @@ class Select extends BaseControlValueAccessor {
14338
14383
  }
14339
14384
  return this.valueAsArray().slice(0, this.visibleSelectedCount());
14340
14385
  }, ...(ngDevMode ? [{ debugName: "visibleSelectedValues" }] : []));
14341
- this.hasHiddenSelectedValues = computed(() => {
14342
- if (!this.multiple()) {
14343
- return false;
14344
- }
14345
- return this.hiddenSelectedCount() > 0;
14346
- }, ...(ngDevMode ? [{ debugName: "hasHiddenSelectedValues" }] : []));
14347
14386
  this.hiddenSelectedCount = computed(() => {
14348
14387
  if (!this.multiple()) {
14349
14388
  return 0;
@@ -14808,29 +14847,23 @@ class Select extends BaseControlValueAccessor {
14808
14847
  const actionsWidth = actions?.offsetWidth ?? 0;
14809
14848
  const availableWidth = Math.max(wrapperWidth - actionsWidth - 24, 0);
14810
14849
  if (availableWidth <= 0) {
14811
- this.visibleSelectedCount.set(0);
14850
+ this.visibleSelectedCount.set(1);
14812
14851
  return;
14813
14852
  }
14814
14853
  const chipGap = 4;
14815
- const ellipsisWidth = 28;
14816
14854
  let usedWidth = 0;
14817
14855
  let visibleCount = 0;
14818
- for (let i = 0; i < selected.length; i++) {
14819
- const label = this.getOptionLabelByValue(selected[i]);
14856
+ for (const selectedValue of selected) {
14857
+ const label = this.getOptionLabelByValue(selectedValue);
14820
14858
  const chipWidth = this._measureChipWidth(label, input);
14821
- const remainingItems = selected.length - (i + 1);
14822
- const needsEllipsis = remainingItems > 0;
14823
- const projectedWidth = usedWidth +
14824
- (visibleCount > 0 ? chipGap : 0) +
14825
- chipWidth +
14826
- (needsEllipsis ? chipGap + ellipsisWidth : 0);
14859
+ const projectedWidth = usedWidth + (visibleCount > 0 ? chipGap : 0) + chipWidth;
14827
14860
  if (projectedWidth > availableWidth) {
14828
14861
  break;
14829
14862
  }
14830
14863
  usedWidth += (visibleCount > 0 ? chipGap : 0) + chipWidth;
14831
14864
  visibleCount++;
14832
14865
  }
14833
- this.visibleSelectedCount.set(visibleCount);
14866
+ this.visibleSelectedCount.set(Math.max(visibleCount, 1));
14834
14867
  }
14835
14868
  _measureChipWidth(label, input) {
14836
14869
  if (!this._measureCanvas) {
@@ -15001,9 +15034,6 @@ class Select extends BaseControlValueAccessor {
15001
15034
  </button>
15002
15035
  </span>
15003
15036
  }
15004
- @if (hasHiddenSelectedValues()) {
15005
- <span class="g-select-value-chip-ellipsis">...</span>
15006
- }
15007
15037
  </div>
15008
15038
  }
15009
15039
 
@@ -15242,9 +15272,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImpo
15242
15272
  </button>
15243
15273
  </span>
15244
15274
  }
15245
- @if (hasHiddenSelectedValues()) {
15246
- <span class="g-select-value-chip-ellipsis">...</span>
15247
- }
15248
15275
  </div>
15249
15276
  }
15250
15277
 
@@ -16355,8 +16382,8 @@ const SELECTORS = `
16355
16382
  const BREAKPOINTS = {
16356
16383
  base: '(min-width: 0px)',
16357
16384
  sm: '(max-width: 767px)',
16358
- md: '(min-width: 768px) and (max-width: 1279px)',
16359
- lg: '(min-width: 1280px)',
16385
+ md: '(min-width: 768px) and (max-width: 1366px)',
16386
+ lg: '(min-width: 1367px)',
16360
16387
  };
16361
16388
  class FlexLayoutDirective {
16362
16389
  constructor() {
@@ -19629,7 +19656,7 @@ class Sidenav {
19629
19656
  this._changeDetectorRef.detectChanges();
19630
19657
  }
19631
19658
  _getViewportSize(width) {
19632
- if (width <= 640) {
19659
+ if (width <= 767) {
19633
19660
  return 'mobile';
19634
19661
  }
19635
19662
  if (width < 1366) {
@@ -23046,7 +23073,7 @@ class TreeTable {
23046
23073
  return this._data;
23047
23074
  }
23048
23075
  constructor() {
23049
- this.matPaginatorRef = viewChild.required(MatPaginator);
23076
+ this.matPaginatorRef = viewChild(MatPaginator, ...(ngDevMode ? [{ debugName: "matPaginatorRef" }] : []));
23050
23077
  this.actionsRef = contentChild('actions', ...(ngDevMode ? [{ debugName: "actionsRef" }] : []));
23051
23078
  this.menuContextRef = contentChild('menuContext', ...(ngDevMode ? [{ debugName: "menuContextRef" }] : []));
23052
23079
  this._uniqueId = inject(_IdGenerator).getId('gipi-tree-table-');
@@ -23103,22 +23130,22 @@ class TreeTable {
23103
23130
  this.onPage = output();
23104
23131
  }
23105
23132
  ngOnInit() {
23106
- const matPaginatorRef = this.matPaginatorRef();
23107
- if (!ObjectUtil.isEmpty(matPaginatorRef)) {
23108
- matPaginatorRef.page
23109
- .pipe(takeUntilDestroyed(this._destroyRef))
23110
- .subscribe(() => this._emitPaginator());
23111
- }
23133
+ this.matPaginatorRef()
23134
+ ?.page.pipe(takeUntilDestroyed(this._destroyRef))
23135
+ .subscribe(() => this._emitPaginator());
23112
23136
  }
23113
23137
  _emitPaginator() {
23114
- const pageEvent = {
23115
- pageIndex: this.matPaginatorRef().pageIndex,
23116
- previousPageIndex: this.matPaginatorRef().pageIndex - 1,
23117
- pageSize: this.matPaginatorRef().pageSize,
23118
- length: this.matPaginatorRef().length,
23119
- pageSizeOptions: this.matPaginatorRef().pageSizeOptions,
23120
- };
23121
- this.onPage.emit(pageEvent);
23138
+ const paginator = this.matPaginatorRef();
23139
+ if (!paginator) {
23140
+ return;
23141
+ }
23142
+ this.onPage.emit({
23143
+ pageIndex: paginator.pageIndex,
23144
+ previousPageIndex: paginator.pageIndex - 1,
23145
+ pageSize: paginator.pageSize,
23146
+ length: paginator.length,
23147
+ pageSizeOptions: paginator.pageSizeOptions,
23148
+ });
23122
23149
  }
23123
23150
  _getNodeChildren(node) {
23124
23151
  const propertyChildren = this.propertyTree;