pne-ui 3.1.1 → 3.1.3

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 (38) hide show
  1. package/README.md +36 -0
  2. package/cjs/component/search-ui/filters/SearchUIFilters.d.ts +7 -1
  3. package/cjs/component/search-ui/filters/SearchUIFilters.js +3 -0
  4. package/cjs/component/search-ui/filters/SearchUIFilters.js.map +1 -1
  5. package/cjs/component/search-ui/filters/criterionAvailability.d.ts +7 -0
  6. package/cjs/component/search-ui/filters/criterionAvailability.js +13 -0
  7. package/cjs/component/search-ui/filters/criterionAvailability.js.map +1 -0
  8. package/cjs/component/search-ui/filters/state/actions.js +57 -19
  9. package/cjs/component/search-ui/filters/state/actions.js.map +1 -1
  10. package/cjs/component/search-ui/filters/state/store.d.ts +4 -0
  11. package/cjs/component/search-ui/filters/types.d.ts +13 -0
  12. package/cjs/component/table/AbstractTable.d.ts +1 -0
  13. package/cjs/component/table/AbstractTable.js +6 -5
  14. package/cjs/component/table/AbstractTable.js.map +1 -1
  15. package/cjs/component/table/useDelayedLoading.d.ts +4 -4
  16. package/cjs/component/table/useDelayedLoading.js +15 -6
  17. package/cjs/component/table/useDelayedLoading.js.map +1 -1
  18. package/cjs/exports/search.d.ts +1 -1
  19. package/cjs/exports/search.js.map +1 -1
  20. package/esm/component/search-ui/filters/SearchUIFilters.d.ts +7 -1
  21. package/esm/component/search-ui/filters/SearchUIFilters.js +3 -0
  22. package/esm/component/search-ui/filters/SearchUIFilters.js.map +1 -1
  23. package/esm/component/search-ui/filters/criterionAvailability.d.ts +7 -0
  24. package/esm/component/search-ui/filters/criterionAvailability.js +8 -0
  25. package/esm/component/search-ui/filters/criterionAvailability.js.map +1 -0
  26. package/esm/component/search-ui/filters/state/actions.js +57 -19
  27. package/esm/component/search-ui/filters/state/actions.js.map +1 -1
  28. package/esm/component/search-ui/filters/state/store.d.ts +4 -0
  29. package/esm/component/search-ui/filters/types.d.ts +13 -0
  30. package/esm/component/table/AbstractTable.d.ts +1 -0
  31. package/esm/component/table/AbstractTable.js +6 -5
  32. package/esm/component/table/AbstractTable.js.map +1 -1
  33. package/esm/component/table/useDelayedLoading.d.ts +4 -4
  34. package/esm/component/table/useDelayedLoading.js +15 -6
  35. package/esm/component/table/useDelayedLoading.js.map +1 -1
  36. package/esm/exports/search.d.ts +1 -1
  37. package/esm/exports/search.js.map +1 -1
  38. package/package.json +1 -1
@@ -1,9 +1,9 @@
1
1
  /**
2
- * Хук задержки отображения состояния загрузки.
2
+ * Хук стабилизации отображения состояния загрузки.
3
3
  *
4
- * Если загрузка завершается быстрее {@link DELAY_BEFORE_SHOWING} мс, индикатор не показывается вовсе.
5
- * Если индикатор был показан, он остаётся видимым минимум {@link MIN_DISPLAY_DURATION} мс,
6
- * чтобы избежать мерцания.
4
+ * Initial loading показывается сразу, чтобы таблица не рендерила пустую высоту до первого
5
+ * skeleton. Последующие loading-состояния остаются отложенными, чтобы избежать мерцания
6
+ * при быстрых refetch.
7
7
  */
8
8
  declare const useDelayedLoading: (loading: boolean) => boolean;
9
9
  export default useDelayedLoading;
@@ -2,23 +2,32 @@ import { useEffect, useRef, useState } from 'react';
2
2
  const DELAY_BEFORE_SHOWING = 300;
3
3
  const MIN_DISPLAY_DURATION = 500;
4
4
  /**
5
- * Хук задержки отображения состояния загрузки.
5
+ * Хук стабилизации отображения состояния загрузки.
6
6
  *
7
- * Если загрузка завершается быстрее {@link DELAY_BEFORE_SHOWING} мс, индикатор не показывается вовсе.
8
- * Если индикатор был показан, он остаётся видимым минимум {@link MIN_DISPLAY_DURATION} мс,
9
- * чтобы избежать мерцания.
7
+ * Initial loading показывается сразу, чтобы таблица не рендерила пустую высоту до первого
8
+ * skeleton. Последующие loading-состояния остаются отложенными, чтобы избежать мерцания
9
+ * при быстрых refetch.
10
10
  */
11
11
  const useDelayedLoading = (loading) => {
12
- const [showSkeleton, setShowSkeleton] = useState(false);
13
- const skeletonShownAt = useRef(null);
12
+ const [showSkeleton, setShowSkeleton] = useState(loading);
13
+ const isInitialLoadingRef = useRef(loading);
14
+ const initialLoadingHandledRef = useRef(false);
15
+ const skeletonShownAt = useRef(loading ? Date.now() : null);
14
16
  useEffect(() => {
15
17
  if (loading) {
18
+ if (isInitialLoadingRef.current && !initialLoadingHandledRef.current) {
19
+ initialLoadingHandledRef.current = true;
20
+ setShowSkeleton(true);
21
+ skeletonShownAt.current = skeletonShownAt.current ?? Date.now();
22
+ return undefined;
23
+ }
16
24
  const timer = setTimeout(() => {
17
25
  setShowSkeleton(true);
18
26
  skeletonShownAt.current = Date.now();
19
27
  }, DELAY_BEFORE_SHOWING);
20
28
  return () => clearTimeout(timer);
21
29
  }
30
+ initialLoadingHandledRef.current = true;
22
31
  if (skeletonShownAt.current) {
23
32
  const elapsed = Date.now() - skeletonShownAt.current;
24
33
  if (elapsed < MIN_DISPLAY_DURATION) {
@@ -1 +1 @@
1
- {"version":3,"file":"useDelayedLoading.js","sourceRoot":"","sources":["../../../src/component/table/useDelayedLoading.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAC,MAAM,OAAO,CAAC;AAElD,MAAM,oBAAoB,GAAG,GAAG,CAAC;AACjC,MAAM,oBAAoB,GAAG,GAAG,CAAC;AAEjC;;;;;;GAMG;AACH,MAAM,iBAAiB,GAAG,CAAC,OAAgB,EAAW,EAAE;IACpD,MAAM,CAAC,YAAY,EAAE,eAAe,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IACxD,MAAM,eAAe,GAAG,MAAM,CAAgB,IAAI,CAAC,CAAC;IAEpD,SAAS,CAAC,GAAG,EAAE;QACX,IAAI,OAAO,EAAE,CAAC;YACV,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE;gBAC1B,eAAe,CAAC,IAAI,CAAC,CAAC;gBACtB,eAAe,CAAC,OAAO,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;YACzC,CAAC,EAAE,oBAAoB,CAAC,CAAC;YACzB,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;QACrC,CAAC;QAED,IAAI,eAAe,CAAC,OAAO,EAAE,CAAC;YAC1B,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,eAAe,CAAC,OAAO,CAAC;YACrD,IAAI,OAAO,GAAG,oBAAoB,EAAE,CAAC;gBACjC,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE;oBAC1B,eAAe,CAAC,KAAK,CAAC,CAAC;oBACvB,eAAe,CAAC,OAAO,GAAG,IAAI,CAAC;gBACnC,CAAC,EAAE,oBAAoB,GAAG,OAAO,CAAC,CAAC;gBACnC,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;YACrC,CAAC;QACL,CAAC;QAED,eAAe,CAAC,KAAK,CAAC,CAAC;QACvB,eAAe,CAAC,OAAO,GAAG,IAAI,CAAC;QAC/B,OAAO,SAAS,CAAC;IACrB,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;IAEd,OAAO,YAAY,CAAC;AACxB,CAAC,CAAC;AAEF,eAAe,iBAAiB,CAAC"}
1
+ {"version":3,"file":"useDelayedLoading.js","sourceRoot":"","sources":["../../../src/component/table/useDelayedLoading.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAC,MAAM,OAAO,CAAC;AAElD,MAAM,oBAAoB,GAAG,GAAG,CAAC;AACjC,MAAM,oBAAoB,GAAG,GAAG,CAAC;AAEjC;;;;;;GAMG;AACH,MAAM,iBAAiB,GAAG,CAAC,OAAgB,EAAW,EAAE;IACpD,MAAM,CAAC,YAAY,EAAE,eAAe,CAAC,GAAG,QAAQ,CAAC,OAAO,CAAC,CAAC;IAC1D,MAAM,mBAAmB,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC;IAC5C,MAAM,wBAAwB,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;IAC/C,MAAM,eAAe,GAAG,MAAM,CAAgB,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IAE3E,SAAS,CAAC,GAAG,EAAE;QACX,IAAI,OAAO,EAAE,CAAC;YACV,IAAI,mBAAmB,CAAC,OAAO,IAAI,CAAC,wBAAwB,CAAC,OAAO,EAAE,CAAC;gBACnE,wBAAwB,CAAC,OAAO,GAAG,IAAI,CAAC;gBACxC,eAAe,CAAC,IAAI,CAAC,CAAC;gBACtB,eAAe,CAAC,OAAO,GAAG,eAAe,CAAC,OAAO,IAAI,IAAI,CAAC,GAAG,EAAE,CAAC;gBAChE,OAAO,SAAS,CAAC;YACrB,CAAC;YAED,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE;gBAC1B,eAAe,CAAC,IAAI,CAAC,CAAC;gBACtB,eAAe,CAAC,OAAO,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;YACzC,CAAC,EAAE,oBAAoB,CAAC,CAAC;YAEzB,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;QACrC,CAAC;QAED,wBAAwB,CAAC,OAAO,GAAG,IAAI,CAAC;QAExC,IAAI,eAAe,CAAC,OAAO,EAAE,CAAC;YAC1B,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,eAAe,CAAC,OAAO,CAAC;YACrD,IAAI,OAAO,GAAG,oBAAoB,EAAE,CAAC;gBACjC,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE;oBAC1B,eAAe,CAAC,KAAK,CAAC,CAAC;oBACvB,eAAe,CAAC,OAAO,GAAG,IAAI,CAAC;gBACnC,CAAC,EAAE,oBAAoB,GAAG,OAAO,CAAC,CAAC;gBACnC,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;YACrC,CAAC;QACL,CAAC;QAED,eAAe,CAAC,KAAK,CAAC,CAAC;QACvB,eAAe,CAAC,OAAO,GAAG,IAAI,CAAC;QAC/B,OAAO,SAAS,CAAC;IACrB,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;IAEd,OAAO,YAAY,CAAC;AACxB,CAAC,CAAC;AAEF,eAAe,iBAAiB,CAAC"}
@@ -1,6 +1,6 @@
1
1
  export { SearchUI, type SearchParams, } from '../component/search-ui/SearchUI';
2
2
  export { SearchUIFilters, type SearchUIFiltersConfig, type DateRangeCriterionConfig, } from '../component/search-ui/filters/SearchUIFilters';
3
- export { CriterionTypeEnum, DATE_RANGE_SPEC_TYPES, ExactCriterionSearchLabelEnum, GroupingType, LinkedEntityTypeEnum, MultichoiceFilterTypeEnum, MultigetCriterion, ORDER_SEARCH_LABELS, OrderSearchLabel, SearchCriteria, SearchUIConditions, TransactionSessionGroup, TransactionSessionStatus, TransactionSessionStatuses, DateRangeSpec, } from '../component/search-ui/filters/types';
3
+ export { CriterionTypeEnum, DATE_RANGE_SPEC_TYPES, ExactCriterionSearchLabelEnum, GroupingType, LinkedEntityTypeEnum, MultichoiceFilterTypeEnum, MultigetCriterion, ORDER_SEARCH_LABELS, OrderSearchLabel, SearchCriteria, SearchUICriterionAvailabilityRule, SearchUIConditions, TransactionSessionGroup, TransactionSessionStatus, TransactionSessionStatuses, DateRangeSpec, } from '../component/search-ui/filters/types';
4
4
  export { SearchUIProvider, type SearchUIDefaults } from '../component/search-ui/SearchUIProvider';
5
5
  export { MultigetSelect } from '../component/search-ui/multiget_select/MultigetSelect';
6
6
  export { SearchUITemplate } from '../component/search-ui/filters/types';
@@ -1 +1 @@
1
- {"version":3,"file":"search.js","sourceRoot":"","sources":["../../src/exports/search.ts"],"names":[],"mappings":"AAAA,OAAO,EACH,QAAQ,GAEX,MAAM,iCAAiC,CAAA;AACxC,OAAO,EACH,eAAe,GAGlB,MAAM,gDAAgD,CAAA;AACvD,OAAO,EACH,iBAAiB,EACjB,qBAAqB,EACrB,6BAA6B,EAE7B,oBAAoB,EACpB,yBAAyB,EAEzB,mBAAmB,GAQtB,MAAM,sCAAsC,CAAA;AAC7C,OAAO,EAAE,gBAAgB,EAAyB,MAAM,yCAAyC,CAAA;AACjG,OAAO,EAAE,cAAc,EAAE,MAAM,uDAAuD,CAAA;AAEtF,OAAO,EAAE,uBAAuB,EAAE,MAAM,sCAAsC,CAAA"}
1
+ {"version":3,"file":"search.js","sourceRoot":"","sources":["../../src/exports/search.ts"],"names":[],"mappings":"AAAA,OAAO,EACH,QAAQ,GAEX,MAAM,iCAAiC,CAAA;AACxC,OAAO,EACH,eAAe,GAGlB,MAAM,gDAAgD,CAAA;AACvD,OAAO,EACH,iBAAiB,EACjB,qBAAqB,EACrB,6BAA6B,EAE7B,oBAAoB,EACpB,yBAAyB,EAEzB,mBAAmB,GAStB,MAAM,sCAAsC,CAAA;AAC7C,OAAO,EAAE,gBAAgB,EAAyB,MAAM,yCAAyC,CAAA;AACjG,OAAO,EAAE,cAAc,EAAE,MAAM,uDAAuD,CAAA;AAEtF,OAAO,EAAE,uBAAuB,EAAE,MAAM,sCAAsC,CAAA"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "pne-ui",
3
- "version": "3.1.1",
3
+ "version": "3.1.3",
4
4
  "description": "",
5
5
  "repository": {
6
6
  "type": "git",