dinocollab-core 1.1.2 → 1.1.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 (127) hide show
  1. package/dist/_virtual/_rollupPluginBabelHelpers.js +2 -2
  2. package/dist/data-view/context.js +2 -0
  3. package/dist/data-view/context.js.map +1 -0
  4. package/dist/data-view/convert-filter-to-graphql.js +2 -0
  5. package/dist/data-view/convert-filter-to-graphql.js.map +1 -0
  6. package/dist/data-view/create.active-filters-panel.js +2 -0
  7. package/dist/data-view/create.active-filters-panel.js.map +1 -0
  8. package/dist/data-view/create.data-view.js +2 -0
  9. package/dist/data-view/create.data-view.js.map +1 -0
  10. package/dist/data-view/create.filter-bar.js +2 -0
  11. package/dist/data-view/create.filter-bar.js.map +1 -0
  12. package/dist/data-view/create.filter-menu.js +2 -0
  13. package/dist/data-view/create.filter-menu.js.map +1 -0
  14. package/dist/data-view/create.pagination-bar.js +2 -0
  15. package/dist/data-view/create.pagination-bar.js.map +1 -0
  16. package/dist/data-view/create.popper-panel.js +2 -0
  17. package/dist/data-view/create.popper-panel.js.map +1 -0
  18. package/dist/data-view/create.search-match.js +2 -0
  19. package/dist/data-view/create.search-match.js.map +1 -0
  20. package/dist/data-view/create.sort-menu.js +2 -0
  21. package/dist/data-view/create.sort-menu.js.map +1 -0
  22. package/dist/data-view/create.view-mode.js +2 -0
  23. package/dist/data-view/create.view-mode.js.map +1 -0
  24. package/dist/data-view/dino.js +2 -0
  25. package/dist/data-view/dino.js.map +1 -0
  26. package/dist/data-view/filter-store.js +2 -0
  27. package/dist/data-view/filter-store.js.map +1 -0
  28. package/dist/data-view/helpers.js +2 -0
  29. package/dist/data-view/helpers.js.map +1 -0
  30. package/dist/data-view/key-converter.js +2 -0
  31. package/dist/data-view/key-converter.js.map +1 -0
  32. package/dist/data-view/query-param-url.js +2 -0
  33. package/dist/data-view/query-param-url.js.map +1 -0
  34. package/dist/data-view/scroll-tracking.js +2 -0
  35. package/dist/data-view/scroll-tracking.js.map +1 -0
  36. package/dist/data-view/types.js +2 -0
  37. package/dist/data-view/types.js.map +1 -0
  38. package/dist/data-view/ui.units.js +2 -0
  39. package/dist/data-view/ui.units.js.map +1 -0
  40. package/dist/data-view/view-mode.content.js +2 -0
  41. package/dist/data-view/view-mode.content.js.map +1 -0
  42. package/dist/data-view/view-mode.types.js +2 -0
  43. package/dist/data-view/view-mode.types.js.map +1 -0
  44. package/dist/data-view/view-mode.units.js +2 -0
  45. package/dist/data-view/view-mode.units.js.map +1 -0
  46. package/dist/form/create.form-base.js +1 -1
  47. package/dist/form/create.form-base.js.map +1 -1
  48. package/dist/form/create.form-grid-layout.js +1 -1
  49. package/dist/form/create.form-grid-layout.js.map +1 -1
  50. package/dist/form/helpers.js +1 -1
  51. package/dist/form/helpers.js.map +1 -1
  52. package/dist/index.js +1 -1
  53. package/dist/table/helpers.js +1 -1
  54. package/dist/table/helpers.js.map +1 -1
  55. package/dist/table-grid/create.table-grid.js +1 -1
  56. package/dist/table-grid/create.table-grid.js.map +1 -1
  57. package/dist/table-grid/filter-bar/base.js +2 -0
  58. package/dist/table-grid/filter-bar/base.js.map +1 -0
  59. package/dist/table-grid/filter-bar/create.filter-bar.js +2 -0
  60. package/dist/table-grid/filter-bar/create.filter-bar.js.map +1 -0
  61. package/dist/table-grid/filter-bar/create.filter-menu.js +2 -0
  62. package/dist/table-grid/filter-bar/create.filter-menu.js.map +1 -0
  63. package/dist/table-grid/filter-bar/create.filter-panel.js +2 -0
  64. package/dist/table-grid/filter-bar/create.filter-panel.js.map +1 -0
  65. package/dist/table-grid/filter-bar/create.filtered.js +2 -0
  66. package/dist/table-grid/filter-bar/create.filtered.js.map +1 -0
  67. package/dist/{filter-bar → table-grid/filter-bar}/types.js +1 -1
  68. package/dist/table-grid/filter-bar/types.js.map +1 -0
  69. package/dist/table-grid/filter-bar/ui.units.js +2 -0
  70. package/dist/table-grid/filter-bar/ui.units.js.map +1 -0
  71. package/dist/table-grid/url-query-param.js +1 -1
  72. package/dist/table-grid/url-query-param.js.map +1 -1
  73. package/dist/types/data-view/context.d.ts +27 -0
  74. package/dist/types/data-view/convert-filter-to-graphql.d.ts +30 -0
  75. package/dist/types/data-view/create.active-filters-panel.d.ts +20 -0
  76. package/dist/types/data-view/create.data-view.d.ts +56 -0
  77. package/dist/types/data-view/create.filter-bar.d.ts +87 -0
  78. package/dist/types/data-view/create.filter-menu.d.ts +10 -0
  79. package/dist/types/data-view/create.pagination-bar.d.ts +15 -0
  80. package/dist/types/data-view/create.popper-panel.d.ts +54 -0
  81. package/dist/types/data-view/create.search-match.d.ts +5 -0
  82. package/dist/types/data-view/create.sort-menu.d.ts +5 -0
  83. package/dist/types/data-view/create.view-mode.d.ts +14 -0
  84. package/dist/types/data-view/dino.d.ts +32 -0
  85. package/dist/types/data-view/filter-store.d.ts +39 -0
  86. package/dist/types/data-view/helpers.d.ts +12 -0
  87. package/dist/types/data-view/index.d.ts +9 -0
  88. package/dist/types/data-view/key-converter.d.ts +13 -0
  89. package/dist/types/data-view/query-param-url.d.ts +26 -0
  90. package/dist/types/data-view/scroll-tracking.d.ts +10 -0
  91. package/dist/types/data-view/types.d.ts +206 -0
  92. package/dist/types/data-view/ui.units.d.ts +77 -0
  93. package/dist/types/data-view/view-mode.content.d.ts +17 -0
  94. package/dist/types/data-view/view-mode.types.d.ts +46 -0
  95. package/dist/types/data-view/view-mode.units.d.ts +18 -0
  96. package/dist/types/form/create.form-base.d.ts +11 -5
  97. package/dist/types/form/create.form-grid-layout.d.ts +7 -4
  98. package/dist/types/index.d.ts +2 -2
  99. package/dist/types/{filter-bar → table-grid/filter-bar}/types.d.ts +4 -4
  100. package/dist/types/table-grid/index.d.ts +1 -0
  101. package/dist/types/table-grid/types.d.ts +1 -1
  102. package/dist/types/utils/query-param.d.ts +14 -14
  103. package/dist/utils/query-param.js +1 -1
  104. package/dist/utils/query-param.js.map +1 -1
  105. package/package.json +66 -64
  106. package/dist/filter-bar/base.js +0 -2
  107. package/dist/filter-bar/base.js.map +0 -1
  108. package/dist/filter-bar/create.filter-bar.js +0 -2
  109. package/dist/filter-bar/create.filter-bar.js.map +0 -1
  110. package/dist/filter-bar/create.filter-menu.js +0 -2
  111. package/dist/filter-bar/create.filter-menu.js.map +0 -1
  112. package/dist/filter-bar/create.filter-panel.js +0 -2
  113. package/dist/filter-bar/create.filter-panel.js.map +0 -1
  114. package/dist/filter-bar/create.filtered.js +0 -2
  115. package/dist/filter-bar/create.filtered.js.map +0 -1
  116. package/dist/filter-bar/types.js.map +0 -1
  117. package/dist/filter-bar/ui.units.js +0 -2
  118. package/dist/filter-bar/ui.units.js.map +0 -1
  119. package/dist/types/filter-bar/create.sort-menu.d.ts +0 -1
  120. package/dist/types/table-grid/demo.d.ts +0 -3
  121. /package/dist/types/{filter-bar → table-grid/filter-bar}/base.d.ts +0 -0
  122. /package/dist/types/{filter-bar → table-grid/filter-bar}/create.filter-bar.d.ts +0 -0
  123. /package/dist/types/{filter-bar → table-grid/filter-bar}/create.filter-menu.d.ts +0 -0
  124. /package/dist/types/{filter-bar → table-grid/filter-bar}/create.filter-panel.d.ts +0 -0
  125. /package/dist/types/{filter-bar → table-grid/filter-bar}/create.filtered.d.ts +0 -0
  126. /package/dist/types/{filter-bar → table-grid/filter-bar}/index.d.ts +0 -0
  127. /package/dist/types/{filter-bar → table-grid/filter-bar}/ui.units.d.ts +0 -0
@@ -1,4 +1,4 @@
1
- function t(t,r){(null==r||r>t.length)&&(r=t.length);for(var e=0,n=Array(r);e<r;e++)n[e]=t[e];return n}function r(t){if(Array.isArray(t))return t}function e(r){if(Array.isArray(r))return t(r)}function n(t){if(void 0===t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t}function o(t,r,e,n,o,i,a){try{var u=t[i](a),c=u.value}catch(t){return void e(t)}u.done?r(c):Promise.resolve(c).then(n,o)}function i(t){return function(){var r=this,e=arguments;return new Promise((function(n,i){var a=t.apply(r,e);function u(t){o(a,n,i,u,c,"next",t)}function c(t){o(a,n,i,u,c,"throw",t)}u(void 0)}))}}function a(t,r,e){return r=y(r),P(t,b()?Reflect.construct(r,e||[],y(t).constructor):r.apply(t,e))}function u(t,r){if(!(t instanceof r))throw new TypeError("Cannot call a class as a function")}function c(t,r){for(var e=0;e<r.length;e++){var n=r[e];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(t,C(n.key),n)}}function f(t,r,e){return r&&c(t.prototype,r),e&&c(t,e),Object.defineProperty(t,"prototype",{writable:!1}),t}function l(t,r){var e="undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(!e){if(Array.isArray(t)||(e=G(t))||r){e&&(t=e);var n=0,o=function(){};return{s:o,n:function(){return n>=t.length?{done:!0}:{done:!1,value:t[n++]}},e:function(t){throw t},f:o}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var i,a=!0,u=!1;return{s:function(){e=e.call(t)},n:function(){var t=e.next();return a=t.done,t},e:function(t){u=!0,i=t},f:function(){try{a||null==e.return||e.return()}finally{if(u)throw i}}}}function s(t,r,e){return(r=C(r))in t?Object.defineProperty(t,r,{value:e,enumerable:!0,configurable:!0,writable:!0}):t[r]=e,t}function y(t){return y=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(t){return t.__proto__||Object.getPrototypeOf(t)},y(t)}function p(t,r){if("function"!=typeof r&&null!==r)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(r&&r.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),Object.defineProperty(t,"prototype",{writable:!1}),r&&A(t,r)}function b(){try{var t=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){})))}catch(t){}return(b=function(){return!!t})()}function v(t){if("undefined"!=typeof Symbol&&null!=t[Symbol.iterator]||null!=t["@@iterator"])return Array.from(t)}function d(t,r){var e=null==t?null:"undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(null!=e){var n,o,i,a,u=[],c=!0,f=!1;try{if(i=(e=e.call(t)).next,0===r){if(Object(e)!==e)return;c=!1}else for(;!(c=(n=i.call(e)).done)&&(u.push(n.value),u.length!==r);c=!0);}catch(t){f=!0,o=t}finally{try{if(!c&&null!=e.return&&(a=e.return(),Object(a)!==a))return}finally{if(f)throw o}}return u}}function m(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function h(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function O(t,r){var e=Object.keys(t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(t);r&&(n=n.filter((function(r){return Object.getOwnPropertyDescriptor(t,r).enumerable}))),e.push.apply(e,n)}return e}function j(t){for(var r=1;r<arguments.length;r++){var e=null!=arguments[r]?arguments[r]:{};r%2?O(Object(e),!0).forEach((function(r){s(t,r,e[r])})):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(e)):O(Object(e)).forEach((function(r){Object.defineProperty(t,r,Object.getOwnPropertyDescriptor(e,r))}))}return t}function w(t,r){if(null==t)return{};var e,n,o=g(t,r);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(t);for(n=0;n<i.length;n++)e=i[n],-1===r.indexOf(e)&&{}.propertyIsEnumerable.call(t,e)&&(o[e]=t[e])}return o}function g(t,r){if(null==t)return{};var e={};for(var n in t)if({}.hasOwnProperty.call(t,n)){if(-1!==r.indexOf(n))continue;e[n]=t[n]}return e}function P(t,r){if(r&&("object"==typeof r||"function"==typeof r))return r;if(void 0!==r)throw new TypeError("Derived constructors may only return object or undefined");return n(t)}function S(){
1
+ function t(t,r){(null==r||r>t.length)&&(r=t.length);for(var e=0,n=Array(r);e<r;e++)n[e]=t[e];return n}function r(t){if(Array.isArray(t))return t}function e(r){if(Array.isArray(r))return t(r)}function n(t){if(void 0===t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t}function o(t,r,e,n,o,i,a){try{var u=t[i](a),c=u.value}catch(t){return void e(t)}u.done?r(c):Promise.resolve(c).then(n,o)}function i(t){return function(){var r=this,e=arguments;return new Promise((function(n,i){var a=t.apply(r,e);function u(t){o(a,n,i,u,c,"next",t)}function c(t){o(a,n,i,u,c,"throw",t)}u(void 0)}))}}function a(t,r,e){return r=y(r),P(t,b()?Reflect.construct(r,e||[],y(t).constructor):r.apply(t,e))}function u(t,r){if(!(t instanceof r))throw new TypeError("Cannot call a class as a function")}function c(t,r){for(var e=0;e<r.length;e++){var n=r[e];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(t,C(n.key),n)}}function f(t,r,e){return r&&c(t.prototype,r),e&&c(t,e),Object.defineProperty(t,"prototype",{writable:!1}),t}function l(t,r){var e="undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(!e){if(Array.isArray(t)||(e=G(t))||r){e&&(t=e);var n=0,o=function(){};return{s:o,n:function(){return n>=t.length?{done:!0}:{done:!1,value:t[n++]}},e:function(t){throw t},f:o}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var i,a=!0,u=!1;return{s:function(){e=e.call(t)},n:function(){var t=e.next();return a=t.done,t},e:function(t){u=!0,i=t},f:function(){try{a||null==e.return||e.return()}finally{if(u)throw i}}}}function s(t,r,e){return(r=C(r))in t?Object.defineProperty(t,r,{value:e,enumerable:!0,configurable:!0,writable:!0}):t[r]=e,t}function y(t){return y=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(t){return t.__proto__||Object.getPrototypeOf(t)},y(t)}function p(t,r){if("function"!=typeof r&&null!==r)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(r&&r.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),Object.defineProperty(t,"prototype",{writable:!1}),r&&A(t,r)}function b(){try{var t=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){})))}catch(t){}return(b=function(){return!!t})()}function v(t){if("undefined"!=typeof Symbol&&null!=t[Symbol.iterator]||null!=t["@@iterator"])return Array.from(t)}function d(t,r){var e=null==t?null:"undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(null!=e){var n,o,i,a,u=[],c=!0,f=!1;try{if(i=(e=e.call(t)).next,0===r){if(Object(e)!==e)return;c=!1}else for(;!(c=(n=i.call(e)).done)&&(u.push(n.value),u.length!==r);c=!0);}catch(t){f=!0,o=t}finally{try{if(!c&&null!=e.return&&(a=e.return(),Object(a)!==a))return}finally{if(f)throw o}}return u}}function h(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function m(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function O(t,r){var e=Object.keys(t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(t);r&&(n=n.filter((function(r){return Object.getOwnPropertyDescriptor(t,r).enumerable}))),e.push.apply(e,n)}return e}function j(t){for(var r=1;r<arguments.length;r++){var e=null!=arguments[r]?arguments[r]:{};r%2?O(Object(e),!0).forEach((function(r){s(t,r,e[r])})):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(e)):O(Object(e)).forEach((function(r){Object.defineProperty(t,r,Object.getOwnPropertyDescriptor(e,r))}))}return t}function w(t,r){if(null==t)return{};var e,n,o=g(t,r);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(t);for(n=0;n<i.length;n++)e=i[n],-1===r.indexOf(e)&&{}.propertyIsEnumerable.call(t,e)&&(o[e]=t[e])}return o}function g(t,r){if(null==t)return{};var e={};for(var n in t)if({}.hasOwnProperty.call(t,n)){if(-1!==r.indexOf(n))continue;e[n]=t[n]}return e}function P(t,r){if(r&&("object"==typeof r||"function"==typeof r))return r;if(void 0!==r)throw new TypeError("Derived constructors may only return object or undefined");return n(t)}function S(){
2
2
  /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/babel/babel/blob/main/packages/babel-helpers/LICENSE */
3
- var t,r,e="function"==typeof Symbol?Symbol:{},n=e.iterator||"@@iterator",o=e.toStringTag||"@@toStringTag";function i(e,n,o,i){var c=n&&n.prototype instanceof u?n:u,f=Object.create(c.prototype);return T(f,"_invoke",function(e,n,o){var i,u,c,f=0,l=o||[],s=!1,y={p:0,n:0,v:t,a:p,f:p.bind(t,4),d:function(r,e){return i=r,u=0,c=t,y.n=e,a}};function p(e,n){for(u=e,c=n,r=0;!s&&f&&!o&&r<l.length;r++){var o,i=l[r],p=y.p,b=i[2];e>3?(o=b===n)&&(c=i[(u=i[4])?5:(u=3,3)],i[4]=i[5]=t):i[0]<=p&&((o=e<2&&p<i[1])?(u=0,y.v=n,y.n=i[1]):p<b&&(o=e<3||i[0]>n||n>b)&&(i[4]=e,i[5]=n,y.n=b,u=0))}if(o||e>1)return a;throw s=!0,n}return function(o,l,b){if(f>1)throw TypeError("Generator is already running");for(s&&1===l&&p(l,b),u=l,c=b;(r=u<2?t:c)||!s;){i||(u?u<3?(u>1&&(y.n=-1),p(u,c)):y.n=c:y.v=c);try{if(f=2,i){if(u||(o="next"),r=i[o]){if(!(r=r.call(i,c)))throw TypeError("iterator result is not an object");if(!r.done)return r;c=r.value,u<2&&(u=0)}else 1===u&&(r=i.return)&&r.call(i),u<2&&(c=TypeError("The iterator does not provide a '"+o+"' method"),u=1);i=t}else if((r=(s=y.n<0)?c:e.call(n,y))!==a)break}catch(r){i=t,u=1,c=r}finally{f=1}}return{value:r,done:s}}}(e,o,i),!0),f}var a={};function u(){}function c(){}function f(){}r=Object.getPrototypeOf;var l=[][n]?r(r([][n]())):(T(r={},n,(function(){return this})),r),s=f.prototype=u.prototype=Object.create(l);function y(t){return Object.setPrototypeOf?Object.setPrototypeOf(t,f):(t.__proto__=f,T(t,o,"GeneratorFunction")),t.prototype=Object.create(s),t}return c.prototype=f,T(s,"constructor",f),T(f,"constructor",c),c.displayName="GeneratorFunction",T(f,o,"GeneratorFunction"),T(s),T(s,o,"Generator"),T(s,n,(function(){return this})),T(s,"toString",(function(){return"[object Generator]"})),(S=function(){return{w:i,m:y}})()}function T(t,r,e,n){var o=Object.defineProperty;try{o({},"",{})}catch(t){o=0}T=function(t,r,e,n){if(r)o?o(t,r,{value:e,enumerable:!n,configurable:!n,writable:!n}):t[r]=e;else{function i(r,e){T(t,r,(function(t){return this._invoke(r,e,t)}))}i("next",0),i("throw",1),i("return",2)}},T(t,r,e,n)}function A(t,r){return A=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(t,r){return t.__proto__=r,t},A(t,r)}function E(t,e){return r(t)||d(t,e)||G(t,e)||m()}function _(t){return r(t)||v(t)||G(t)||m()}function I(t){return e(t)||v(t)||G(t)||h()}function x(t,r){if("object"!=typeof t||!t)return t;var e=t[Symbol.toPrimitive];if(void 0!==e){var n=e.call(t,r);if("object"!=typeof n)return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===r?String:Number)(t)}function C(t){var r=x(t,"string");return"symbol"==typeof r?r:r+""}function k(t){return k="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},k(t)}function G(r,e){if(r){if("string"==typeof r)return t(r,e);var n={}.toString.call(r).slice(8,-1);return"Object"===n&&r.constructor&&(n=r.constructor.name),"Map"===n||"Set"===n?Array.from(r):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?t(r,e):void 0}}export{t as arrayLikeToArray,r as arrayWithHoles,e as arrayWithoutHoles,n as assertThisInitialized,i as asyncToGenerator,a as callSuper,u as classCallCheck,f as createClass,l as createForOfIteratorHelper,s as defineProperty,y as getPrototypeOf,p as inherits,b as isNativeReflectConstruct,v as iterableToArray,d as iterableToArrayLimit,m as nonIterableRest,h as nonIterableSpread,j as objectSpread2,w as objectWithoutProperties,g as objectWithoutPropertiesLoose,P as possibleConstructorReturn,S as regenerator,T as regeneratorDefine,A as setPrototypeOf,E as slicedToArray,_ as toArray,I as toConsumableArray,x as toPrimitive,C as toPropertyKey,k as typeof,G as unsupportedIterableToArray};
3
+ var t,r,e="function"==typeof Symbol?Symbol:{},n=e.iterator||"@@iterator",o=e.toStringTag||"@@toStringTag";function i(e,n,o,i){var c=n&&n.prototype instanceof u?n:u,f=Object.create(c.prototype);return T(f,"_invoke",function(e,n,o){var i,u,c,f=0,l=o||[],s=!1,y={p:0,n:0,v:t,a:p,f:p.bind(t,4),d:function(r,e){return i=r,u=0,c=t,y.n=e,a}};function p(e,n){for(u=e,c=n,r=0;!s&&f&&!o&&r<l.length;r++){var o,i=l[r],p=y.p,b=i[2];e>3?(o=b===n)&&(c=i[(u=i[4])?5:(u=3,3)],i[4]=i[5]=t):i[0]<=p&&((o=e<2&&p<i[1])?(u=0,y.v=n,y.n=i[1]):p<b&&(o=e<3||i[0]>n||n>b)&&(i[4]=e,i[5]=n,y.n=b,u=0))}if(o||e>1)return a;throw s=!0,n}return function(o,l,b){if(f>1)throw TypeError("Generator is already running");for(s&&1===l&&p(l,b),u=l,c=b;(r=u<2?t:c)||!s;){i||(u?u<3?(u>1&&(y.n=-1),p(u,c)):y.n=c:y.v=c);try{if(f=2,i){if(u||(o="next"),r=i[o]){if(!(r=r.call(i,c)))throw TypeError("iterator result is not an object");if(!r.done)return r;c=r.value,u<2&&(u=0)}else 1===u&&(r=i.return)&&r.call(i),u<2&&(c=TypeError("The iterator does not provide a '"+o+"' method"),u=1);i=t}else if((r=(s=y.n<0)?c:e.call(n,y))!==a)break}catch(r){i=t,u=1,c=r}finally{f=1}}return{value:r,done:s}}}(e,o,i),!0),f}var a={};function u(){}function c(){}function f(){}r=Object.getPrototypeOf;var l=[][n]?r(r([][n]())):(T(r={},n,(function(){return this})),r),s=f.prototype=u.prototype=Object.create(l);function y(t){return Object.setPrototypeOf?Object.setPrototypeOf(t,f):(t.__proto__=f,T(t,o,"GeneratorFunction")),t.prototype=Object.create(s),t}return c.prototype=f,T(s,"constructor",f),T(f,"constructor",c),c.displayName="GeneratorFunction",T(f,o,"GeneratorFunction"),T(s),T(s,o,"Generator"),T(s,n,(function(){return this})),T(s,"toString",(function(){return"[object Generator]"})),(S=function(){return{w:i,m:y}})()}function T(t,r,e,n){var o=Object.defineProperty;try{o({},"",{})}catch(t){o=0}T=function(t,r,e,n){if(r)o?o(t,r,{value:e,enumerable:!n,configurable:!n,writable:!n}):t[r]=e;else{function i(r,e){T(t,r,(function(t){return this._invoke(r,e,t)}))}i("next",0),i("throw",1),i("return",2)}},T(t,r,e,n)}function A(t,r){return A=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(t,r){return t.__proto__=r,t},A(t,r)}function E(t,e){return r(t)||d(t,e)||G(t,e)||h()}function _(t){return r(t)||v(t)||G(t)||h()}function I(t){return e(t)||v(t)||G(t)||m()}function x(t,r){if("object"!=typeof t||!t)return t;var e=t[Symbol.toPrimitive];if(void 0!==e){var n=e.call(t,r);if("object"!=typeof n)return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(t)}function C(t){var r=x(t,"string");return"symbol"==typeof r?r:r+""}function k(t){return k="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},k(t)}function G(r,e){if(r){if("string"==typeof r)return t(r,e);var n={}.toString.call(r).slice(8,-1);return"Object"===n&&r.constructor&&(n=r.constructor.name),"Map"===n||"Set"===n?Array.from(r):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?t(r,e):void 0}}export{t as arrayLikeToArray,r as arrayWithHoles,e as arrayWithoutHoles,n as assertThisInitialized,i as asyncToGenerator,a as callSuper,u as classCallCheck,f as createClass,l as createForOfIteratorHelper,s as defineProperty,y as getPrototypeOf,p as inherits,b as isNativeReflectConstruct,v as iterableToArray,d as iterableToArrayLimit,h as nonIterableRest,m as nonIterableSpread,j as objectSpread2,w as objectWithoutProperties,g as objectWithoutPropertiesLoose,P as possibleConstructorReturn,S as regenerator,T as regeneratorDefine,A as setPrototypeOf,E as slicedToArray,_ as toArray,I as toConsumableArray,x as toPrimitive,C as toPropertyKey,k as typeof,G as unsupportedIterableToArray};
4
4
  //# sourceMappingURL=_rollupPluginBabelHelpers.js.map
@@ -0,0 +1,2 @@
1
+ import{objectSpread2 as e}from"../_virtual/_rollupPluginBabelHelpers.js";import{jsx as o}from"react/jsx-runtime";import{createContext as n}from"react";var l={area:void 0,keyword:"",filterState:{},anchorEl:null},t=e(e({filterBarConfigs:{fields:{}}},l),{},{onFilterStateChange:function(){console.log("onFilterStateChange called! The context is not provider")},onKeywordChange:function(){console.log("setKeyword called! The context is not provider")},onPopperPanelChange:function(){console.log("setPanelValue called! The context is not provider")},onPanelClose:function(){console.log("onPanelClose called! The context is not provider")},onClear:function(){console.log("onClear called! The context is not provider")}}),r=n(t);function a(e){try{return o(r.Consumer,{children:e})}catch(o){return console.log(o),e(t)}}export{r as DataViewContext,t as defaultDataViewContext,l as defaultFilterBarState,a as mapDataViewContext};
2
+ //# sourceMappingURL=context.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"context.js","sources":["../../src/data-view/context.tsx"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-explicit-any */\r\nimport React, { createContext, ReactNode } from 'react'\r\nimport { IFilterArea, IFilterBarConfigs, IFilterState, IFilterStateChangeHandler } from './types'\r\nimport { EViewMode } from './view-mode.types'\r\n\r\nexport interface IDataViewState<T> {\r\n anchorEl: HTMLElement | null\r\n area?: IFilterArea\r\n keyword: string\r\n filterState: IFilterState<T>\r\n scrolled?: boolean\r\n viewMode?: EViewMode\r\n}\r\n\r\nexport const defaultFilterBarState: IDataViewState<any> = {\r\n area: undefined,\r\n keyword: '',\r\n filterState: {},\r\n anchorEl: null\r\n}\r\n\r\nexport type OnPanelValueChange = (anchorEl: HTMLElement | null, area?: IFilterArea) => void\r\n\r\nexport interface IDataViewContext<T = any> extends IDataViewState<T> {\r\n // State values\r\n filterBarConfigs: IFilterBarConfigs<T>\r\n\r\n // Action functions\r\n onFilterStateChange: IFilterStateChangeHandler<T>\r\n onKeywordChange: (keyword: string) => void\r\n onPopperPanelChange: OnPanelValueChange\r\n onPanelClose: () => void\r\n onClear: () => void\r\n}\r\n\r\nexport interface IDataViewContextProps<T = any> {\r\n context: IDataViewContext<T>\r\n}\r\n\r\nexport const defaultDataViewContext: IDataViewContext = {\r\n // State values\r\n filterBarConfigs: { fields: {} },\r\n ...defaultFilterBarState,\r\n\r\n // Action functions\r\n onFilterStateChange: () => {\r\n console.log('onFilterStateChange called! The context is not provider')\r\n },\r\n onKeywordChange: () => {\r\n console.log('setKeyword called! The context is not provider')\r\n },\r\n onPopperPanelChange: () => {\r\n console.log('setPanelValue called! The context is not provider')\r\n },\r\n onPanelClose: () => {\r\n console.log('onPanelClose called! The context is not provider')\r\n },\r\n onClear: () => {\r\n console.log('onClear called! The context is not provider')\r\n }\r\n}\r\n\r\nexport const DataViewContext = createContext<IDataViewContext>(defaultDataViewContext)\r\n\r\nexport function mapDataViewContext<T = any>(context: (context: IDataViewContext<T>) => ReactNode): ReactNode {\r\n try {\r\n return <DataViewContext.Consumer>{context}</DataViewContext.Consumer>\r\n } catch (error) {\r\n console.log(error)\r\n return context(defaultDataViewContext)\r\n }\r\n}\r\n"],"names":["defaultFilterBarState","area","undefined","keyword","filterState","anchorEl","defaultDataViewContext","_objectSpread","filterBarConfigs","fields","onFilterStateChange","console","log","onKeywordChange","onPopperPanelChange","onPanelClose","onClear","DataViewContext","createContext","mapDataViewContext","context","_jsx","Consumer","children","error"],"mappings":"uJAcO,IAAMA,EAA6C,CACxDC,UAAMC,EACNC,QAAS,GACTC,YAAa,CAAE,EACfC,SAAU,MAqBCC,EAAsBC,EAAAA,EAAA,CAEjCC,iBAAkB,CAAEC,OAAQ,CAAA,IACzBT,GAAqB,GAAA,CAGxBU,oBAAqB,WACnBC,QAAQC,IAAI,0DACb,EACDC,gBAAiB,WACfF,QAAQC,IAAI,iDACb,EACDE,oBAAqB,WACnBH,QAAQC,IAAI,oDACb,EACDG,aAAc,WACZJ,QAAQC,IAAI,mDACb,EACDI,QAAS,WACPL,QAAQC,IAAI,8CACd,IAGWK,EAAkBC,EAAgCZ,GAEzD,SAAUa,EAA4BC,GAC1C,IACE,OAAOC,EAACJ,EAAgBK,SAAU,CAAAC,SAAAH,GACnC,CAAC,MAAOI,GAEP,OADAb,QAAQC,IAAIY,GACLJ,EAAQd,EAChB,CACH"}
@@ -0,0 +1,2 @@
1
+ import{createClass as e,classCallCheck as i,defineProperty as r,createForOfIteratorHelper as t}from"../_virtual/_rollupPluginBabelHelpers.js";import{getKeyConverter as n,createRequestBuilder as l}from"dinocollab-http-service";var o=e((function e(o){var a=this;i(this,e),r(this,"fromFilter",(function(e){return a.filterStateStore=e,a})),r(this,"applySingleFilterCondition",(function(e,i){var r,t,n,l=null!==(r=null===(t=i.value)||void 0===t?void 0:t.toString())&&void 0!==r?r:"",o=null!==(n=i.keyConvert.deep)&&void 0!==n?n:i.keyConvert.field,a=i.keyConvert.custom;a?e.filterCustom(a(l),i.option):o&&e.filterContains(o,l,i.option)})),r(this,"applyMulFilterCondition",(function(e,i,r){if(0!==i.length)if(1===i.length){var n=i[0];r&&(n.option=r),a.applySingleFilterCondition(e,n)}else e.scope((function(e){var r,n=t(i);try{for(n.s();!(r=n.n()).done;){var l=r.value;a.applySingleFilterCondition(e,l)}}catch(e){n.e(e)}finally{n.f()}return e}),r)})),r(this,"handleFilter",(function(e){var i,r=null===(i=a.filterStateStore)||void 0===i?void 0:i.filter;if(r){var l=Object.keys(r).filter(Boolean),o=l.reduce((function(e,i){var l,o,u=n(i,a.keyConverter),v=null!==(l=r[i])&&void 0!==l?l:[],c=t(u);try{for(c.s();!(o=c.n()).done;){var f,d=o.value,s=t(v);try{for(s.s();!(f=s.n()).done;){var h,p=f.value;if(p.value){var y=null!==(h=e[i])&&void 0!==h?h:[];y.push({value:p.value,keyConvert:d,option:{logic:"Or"}}),e[i]=y}}}catch(e){s.e(e)}finally{s.f()}}}catch(e){c.e(e)}finally{c.f()}return e}),{});e.scope((function(i){for(var r in o){var t=o[r];t&&0!==t.length&&a.applyMulFilterCondition(1===l.length?e:i,t,{logic:"And"})}return i}),{logic:"And"})}})),r(this,"handleQuickSearch",(function(e){var i,r=null===(i=a.filterStateStore)||void 0===i?void 0:i.quickSearch;if(r&&a.quickSearchFields&&0!==a.quickSearchFields.length){var l=(Array.isArray(r)?r:[r]).map((function(e){return null==e?void 0:e.toString().trim()})).filter(Boolean);if(0!==l.length){var o=a.quickSearchFields.reduce((function(e,i){var r,o=n(i,a.keyConverter),u=t(o);try{for(u.s();!(r=u.n()).done;){var v,c=r.value,f=t(l);try{for(f.s();!(v=f.n()).done;){var d=v.value;d&&e.push({value:d,keyConvert:c})}}catch(e){f.e(e)}finally{f.f()}}}catch(e){u.e(e)}finally{u.f()}return e}),[]);o.length>0&&e.scope((function(e){var i,r=t(o);try{for(r.s();!(i=r.n()).done;){var n=i.value;a.applySingleFilterCondition(e,n)}}catch(e){r.e(e)}finally{r.f()}return e}))}}})),r(this,"handlePagination",(function(e){var i,r=null===(i=a.filterStateStore)||void 0===i?void 0:i.pagination;if(r)if(void 0!==r.page&&void 0!==r.pageSize){var t=r.page*r.pageSize;e.skip(t),e.take(r.pageSize)}else void 0!==r.pageSize&&e.take(r.pageSize)})),r(this,"handleSort",(function(e){var i,r=null===(i=a.filterStateStore)||void 0===i?void 0:i.sort;if(r){var t=n(r.field,a.keyConverter);if(t.length>0){var l,o=t[0],u=null!==(l=o.deep)&&void 0!==l?l:o.field;u&&e.sort(u,{direction:"asc"===r.direction?"ASC":"DESC"})}}})),r(this,"prebuild",(function(e){return a.prebuildFunc=e,a})),r(this,"build",(function(){var e=l({ignoreEmpty:!0});return a.handleSort(e),a.handlePagination(e),a.handleQuickSearch(e),a.handleFilter(e),a.prebuildFunc&&a.prebuildFunc(e),e.build()})),this.keyConverter=o.keyConverter,this.quickSearchFields=o.quickSearchFields})),a=function(e){return new o(e)};export{a as createConvertFilterToGraphQL,o as default};
2
+ //# sourceMappingURL=convert-filter-to-graphql.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"convert-filter-to-graphql.js","sources":["../../src/data-view/convert-filter-to-graphql.ts"],"sourcesContent":["import { createRequestBuilder, getKeyConverter, RequestParam } from 'dinocollab-http-service'\r\nimport type { IFilterOption, IKeyConverterDef, IKeyConverterModel } from 'dinocollab-http-service'\r\nimport { IFilterState } from './types'\r\n\r\nexport interface ISingleFilterCondition<G extends object> {\r\n value: any\r\n keyConvert: IKeyConverterDef<G>\r\n option?: Partial<IFilterOption>\r\n}\r\n\r\nexport interface IFilterToGraphQLParams<T, G extends object> {\r\n keyConverter: IKeyConverterModel<T, G>\r\n quickSearchFields?: (keyof T)[]\r\n}\r\n\r\nclass ConvertFilterToGraphQL<T, G extends object> {\r\n private keyConverter\r\n private quickSearchFields?: (keyof T)[]\r\n\r\n constructor(params: IFilterToGraphQLParams<T, G>) {\r\n this.keyConverter = params.keyConverter\r\n this.quickSearchFields = params.quickSearchFields\r\n }\r\n\r\n private filterStateStore?: IFilterState<T>\r\n fromFilter = (filterState: IFilterState<T>) => {\r\n this.filterStateStore = filterState\r\n return this\r\n }\r\n\r\n private applySingleFilterCondition = (rp: RequestParam<G>, params: ISingleFilterCondition<G>) => {\r\n const val = params.value?.toString() ?? ''\r\n const targetField = (params.keyConvert.deep ?? params.keyConvert.field) as keyof G\r\n const custom = params.keyConvert.custom\r\n if (custom) rp.filterCustom(custom(val), params.option)\r\n else if (targetField) rp.filterContains(targetField, val, params.option)\r\n }\r\n\r\n private applyMulFilterCondition = (rp: RequestParam<G>, items: ISingleFilterCondition<G>[], option?: Partial<IFilterOption>) => {\r\n if (items.length === 0) return\r\n else if (items.length === 1) {\r\n const i = items[0]\r\n if (option) i.option = option\r\n this.applySingleFilterCondition(rp, i)\r\n } else {\r\n rp.scope((q) => {\r\n for (const item of items) {\r\n this.applySingleFilterCondition(q, item)\r\n }\r\n return q\r\n }, option)\r\n }\r\n }\r\n\r\n private handleFilter = (rp: RequestParam<G>) => {\r\n const filter = this.filterStateStore?.filter\r\n if (!filter) return\r\n\r\n const keys = Object.keys(filter).filter(Boolean) as (keyof T)[]\r\n const list = keys.reduce<{ [key in keyof T]?: ISingleFilterCondition<G>[] }>((a, k) => {\r\n const keyConverteds = getKeyConverter(k, this.keyConverter)\r\n const items = filter[k] ?? []\r\n for (const keyConverted of keyConverteds) {\r\n for (const item of items) {\r\n if (!item.value) continue\r\n const list: ISingleFilterCondition<G>[] = a[k] ?? []\r\n list.push({ value: item.value, keyConvert: keyConverted, option: { logic: 'Or' } })\r\n a[k] = list\r\n }\r\n }\r\n return a\r\n }, {})\r\n\r\n rp.scope(\r\n (q) => {\r\n for (const key in list) {\r\n const items = list[key]\r\n if (!items || items.length === 0) continue\r\n this.applyMulFilterCondition(keys.length === 1 ? rp : q, items, { logic: 'And' })\r\n }\r\n return q\r\n },\r\n { logic: 'And' }\r\n )\r\n }\r\n\r\n private handleQuickSearch = (rp: RequestParam<G>) => {\r\n const quickSearch = this.filterStateStore?.quickSearch\r\n if (!quickSearch || !this.quickSearchFields || this.quickSearchFields.length === 0) return\r\n\r\n // Convert quickSearch to array of strings\r\n const values = Array.isArray(quickSearch) ? quickSearch : [quickSearch]\r\n const trimmedValues = values.map((v) => v?.toString().trim()).filter(Boolean)\r\n\r\n if (trimmedValues.length === 0) return\r\n\r\n const list = this.quickSearchFields.reduce<ISingleFilterCondition<G>[]>((a, field) => {\r\n const keyConverteds = getKeyConverter(field, this.keyConverter)\r\n for (const keyConverted of keyConverteds) {\r\n for (const val of trimmedValues) {\r\n if (!val) continue\r\n a.push({ value: val, keyConvert: keyConverted })\r\n }\r\n }\r\n return a\r\n }, [])\r\n\r\n // Apply quick search with OR logic (scope)\r\n if (list.length > 0) {\r\n rp.scope((q) => {\r\n for (const item of list) {\r\n this.applySingleFilterCondition(q, item)\r\n }\r\n return q\r\n })\r\n }\r\n }\r\n\r\n private handlePagination = (rp: RequestParam<G>) => {\r\n const pagination = this.filterStateStore?.pagination\r\n if (!pagination) return\r\n\r\n // Convert page-based pagination to skip/take\r\n if (pagination.page !== undefined && pagination.pageSize !== undefined) {\r\n const skip = pagination.page * pagination.pageSize\r\n rp.skip(skip)\r\n rp.take(pagination.pageSize)\r\n } else if (pagination.pageSize !== undefined) {\r\n rp.take(pagination.pageSize)\r\n }\r\n }\r\n\r\n private handleSort = (rp: RequestParam<G>) => {\r\n const sort = this.filterStateStore?.sort\r\n if (!sort) return\r\n\r\n const keyConverteds = getKeyConverter(sort.field, this.keyConverter)\r\n if (keyConverteds.length > 0) {\r\n const keyConverted = keyConverteds[0] // Use first converter for sorting\r\n const targetField = (keyConverted.deep ?? keyConverted.field) as keyof G\r\n\r\n if (targetField) {\r\n rp.sort(targetField, { direction: sort.direction === 'asc' ? 'ASC' : 'DESC' })\r\n }\r\n }\r\n }\r\n\r\n private prebuildFunc?: (rp: RequestParam<G>) => RequestParam<G>\r\n prebuild = (func: (requestParam: RequestParam<G>) => RequestParam<G>) => {\r\n this.prebuildFunc = func\r\n return this\r\n }\r\n\r\n build = () => {\r\n const requestBuilder = createRequestBuilder<G>({ ignoreEmpty: true })\r\n this.handleSort(requestBuilder)\r\n this.handlePagination(requestBuilder)\r\n this.handleQuickSearch(requestBuilder)\r\n this.handleFilter(requestBuilder)\r\n if (this.prebuildFunc) this.prebuildFunc(requestBuilder)\r\n return requestBuilder.build()\r\n }\r\n}\r\nexport default ConvertFilterToGraphQL\r\n\r\nexport const createConvertFilterToGraphQL = <T, G extends object>(params: IFilterToGraphQLParams<T, G>) => {\r\n return new ConvertFilterToGraphQL<T, G>(params)\r\n}\r\n"],"names":["ConvertFilterToGraphQL","_createClass","params","_this","this","_classCallCheck","_defineProperty","filterState","filterStateStore","rp","_params$value$toStrin","_params$value","_params$keyConvert$de","val","value","toString","targetField","keyConvert","deep","field","custom","filterCustom","option","filterContains","items","length","i","applySingleFilterCondition","scope","q","_step","_iterator","_createForOfIteratorHelper","s","n","done","item","err","e","f","_this$filterStateStor","filter","keys","Object","Boolean","list","reduce","a","k","_filter$k","_step2","keyConverteds","getKeyConverter","keyConverter","_iterator2","_step3","keyConverted","_iterator3","_a$k","push","logic","key","applyMulFilterCondition","_this$filterStateStor2","quickSearch","quickSearchFields","trimmedValues","Array","isArray","map","v","trim","_step4","_iterator4","_step5","_iterator5","_step6","_iterator6","_this$filterStateStor3","pagination","undefined","page","pageSize","skip","take","_this$filterStateStor4","sort","_keyConverted$deep","direction","func","prebuildFunc","requestBuilder","createRequestBuilder","ignoreEmpty","handleSort","handlePagination","handleQuickSearch","handleFilter","build","createConvertFilterToGraphQL"],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ import{defineProperty as e,inherits as t,createClass as i,classCallCheck as r,callSuper as a}from"../_virtual/_rollupPluginBabelHelpers.js";import{jsx as n,Fragment as l,jsxs as o}from"react/jsx-runtime";import{Component as c,Fragment as s}from"react";import{styled as d,Box as u,Collapse as m,Typography as v,Chip as f}from"@mui/material";import{createFilterStore as h}from"./filter-store.js";import{ClearAllButton as p,mapSortConfigs as C}from"./ui.units.js";import{mapDataViewContext as x}from"./context.js";var S={root:"ActiveFiltersPanel-root",content:"ActiveFiltersPanel-content",item:"ActiveFiltersPanel-item",itemContent:"ActiveFiltersPanel-itemContent",itemChip:"ActiveFiltersPanel-itemChip",removeButton:"ActiveFiltersPanel-removeButton",overlay:"ActiveFiltersPanel-overlay"};function g(){return function(){function d(t){var i;return r(this,d),i=a(this,d,[t]),e(i,"handleAnimationExited",(function(){i.setState({isClosing:!0})})),e(i,"renderItems",(function(e){var t;return o(u,{className:S.item,children:[o(v,{variant:"caption",sx:{fontWeight:700},children:[e.label||(null===(t=e.field)||void 0===t?void 0:t.toString()),":"]}),n(u,{className:S.itemContent,children:e.items.map((function(t){return n(f,{clickable:!0,size:"small",label:t.label||t.value,className:S.itemChip,onDelete:function(){e.isQuickSearch?i.removeQuickSearch(t):e.field&&i.removeFilter(e.field,t)}},t.value)}))})]})})),e(i,"renderFilters",(function(){var e,t=(null===(e=i.dataViewContext.filterState)||void 0===e?void 0:e.filter)||{},r=Object.keys(t);return 0===r.length?n(l,{}):r.map((function(e){var r,a=(null!==(r=t[e])&&void 0!==r?r:[]).reduce((function(e,t){var i;return t.value&&e.push({value:null===(i=t.value)||void 0===i?void 0:i.toString(),label:t.label}),e}),[]);return n(s,{children:i.renderItems({field:e,label:e.toString(),items:a})},e.toString())}))})),e(i,"renderSort",(function(){var e,t,r=null===(e=i.dataViewContext.filterState)||void 0===e?void 0:e.sort;if(!r)return n(l,{});var a=null===(t=i.dataViewContext.filterBarConfigs.fields)||void 0===t?void 0:t[r.field],c=(null==a?void 0:a.label)||r.field.toString(),s=C[r.direction];return o(u,{className:S.item,children:[n(v,{variant:"caption",sx:{fontWeight:700},children:"Sort:"}),n(u,{className:S.itemContent,children:n(f,{clickable:!0,size:"small",label:o(u,{sx:{display:"flex",alignItems:"center",gap:.5},children:[n("span",{children:c}),s.icon]}),className:S.itemChip,onClick:i.toggleSortDirection,onDelete:function(){return i.removeSort()},title:"".concat(c," - ").concat(s.title)})})]})})),e(i,"removeFilter",(function(e,t){var r=h(i.dataViewContext.filterState).removeFilterItem(e,t.value,{reason:"field"});i.dataViewContext.onFilterStateChange(r.build())})),e(i,"removeQuickSearch",(function(e){var t=h(i.dataViewContext.filterState).removeQuickSearchItem(e.value,{reason:"quickSearch"});i.dataViewContext.onFilterStateChange(t.build())})),e(i,"removeSort",(function(){var e=h(i.dataViewContext.filterState).removeSort({reason:"sort"});i.dataViewContext.onFilterStateChange(e.build())})),e(i,"toggleSortDirection",(function(){var e=h(i.dataViewContext.filterState).toggleSortDirection({reason:"sort"});i.dataViewContext.onFilterStateChange(e.build())})),e(i,"handleClearAll",(function(){var e=h(i.dataViewContext.filterState).reset();i.dataViewContext.onFilterStateChange(e.build())})),i.state={data:null,isClosing:!1},i}return t(d,c),i(d,[{key:"render",value:function(){var e=this;return x((function(t){if(e.dataViewContext=t,!e.dataViewContext)return n(l,{});var i=e.dataViewContext.filterBarConfigs.defaultValue,r=h(e.dataViewContext.filterState,i).isEmpty();return n(m,{in:!r,timeout:300,unmountOnExit:!0,orientation:"vertical",onExited:e.handleAnimationExited,children:o(b,{className:S.root,children:[o(u,{className:S.content,children:[e.renderSort(),e.renderQuickSearch(),e.renderFilters(),!r&&n(p,{className:S.removeButton,onClick:e.handleClearAll})]}),e.props.loading&&n(u,{className:S.overlay})]})})}))}},{key:"renderQuickSearch",value:function(){var e,t=(null===(e=this.dataViewContext.filterState)||void 0===e?void 0:e.quickSearch)||[],i=(Array.isArray(t)?t:[t]).map((function(e){return{value:e}}));return i&&0!==i.length?this.renderItems({label:"Quick search",items:i,isQuickSearch:!0}):n(l,{})}}])}()}var b=d(u)(e(e(e(e(e({position:"relative"},".".concat(S.content),{display:"flex",alignItems:"center",flexWrap:"wrap",gap:"8px"}),".".concat(S.item),{display:"flex",border:"dashed 1px var(--color-divider, rgba(145 160 170 / 20%))",borderRadius:"4px",alignItems:"center",padding:"6px 8px",gap:"8px"}),".".concat(S.itemContent),{display:"flex",gap:"4px"}),".".concat(S.itemChip),{borderRadius:"4px"}),".".concat(S.overlay),{position:"absolute",top:0,left:0,width:"100%",height:"100%",backdropFilter:"blur(1px)"}));export{S as activeFiltersPanelClasses,g as default};
2
+ //# sourceMappingURL=create.active-filters-panel.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"create.active-filters-panel.js","sources":["../../src/data-view/create.active-filters-panel.tsx"],"sourcesContent":["import React, { Component, ComponentType, Fragment } from 'react'\r\nimport { Box, Chip, Collapse, styled, Typography } from '@mui/material'\r\nimport { createFilterStore } from './filter-store'\r\nimport { ClearAllButton, mapSortConfigs } from './ui.units'\r\nimport { IDataViewContext, mapDataViewContext } from './context'\r\nimport { IFilterItem, IFilterMap, IFilterState, IItemBase } from './types'\r\n\r\nexport const activeFiltersPanelClasses = {\r\n root: 'ActiveFiltersPanel-root',\r\n content: 'ActiveFiltersPanel-content',\r\n item: 'ActiveFiltersPanel-item',\r\n itemContent: 'ActiveFiltersPanel-itemContent',\r\n itemChip: 'ActiveFiltersPanel-itemChip',\r\n removeButton: 'ActiveFiltersPanel-removeButton',\r\n overlay: 'ActiveFiltersPanel-overlay'\r\n}\r\n\r\ninterface IRenderItemsParams<T> {\r\n field?: keyof T\r\n label?: string\r\n items: IItemBase[]\r\n isQuickSearch?: boolean\r\n}\r\n\r\nexport interface IActiveFiltersPanelProps {\r\n loading?: boolean\r\n}\r\n\r\nexport interface IActiveFiltersPanelState<T> {\r\n data: IFilterState<T> | null\r\n isClosing: boolean\r\n}\r\n\r\nfunction createActiveFiltersPanel<T>(): ComponentType<IActiveFiltersPanelProps> {\r\n class ActiveFiltersPanel extends Component<IActiveFiltersPanelProps, IActiveFiltersPanelState<T>> {\r\n declare dataViewContext: IDataViewContext<T>\r\n\r\n constructor(props: IActiveFiltersPanelProps) {\r\n super(props)\r\n this.state = {\r\n data: null,\r\n isClosing: false\r\n }\r\n }\r\n\r\n // Handle animation completion\r\n private handleAnimationExited = () => {\r\n this.setState({ isClosing: true })\r\n }\r\n\r\n render() {\r\n return mapDataViewContext((context) => {\r\n this.dataViewContext = context\r\n if (!this.dataViewContext) return <></>\r\n const { defaultValue } = this.dataViewContext.filterBarConfigs\r\n const isEmpty = createFilterStore(this.dataViewContext.filterState, defaultValue).isEmpty()\r\n return (\r\n <Collapse in={!isEmpty} timeout={300} unmountOnExit orientation='vertical' onExited={this.handleAnimationExited}>\r\n <Wrap className={activeFiltersPanelClasses.root}>\r\n <Box className={activeFiltersPanelClasses.content}>\r\n {this.renderSort()}\r\n {this.renderQuickSearch()}\r\n {this.renderFilters()}\r\n {!isEmpty && <ClearAllButton className={activeFiltersPanelClasses.removeButton} onClick={this.handleClearAll} />}\r\n </Box>\r\n {this.props.loading && <Box className={activeFiltersPanelClasses.overlay} />}\r\n </Wrap>\r\n </Collapse>\r\n )\r\n })\r\n }\r\n\r\n renderItems = (p: IRenderItemsParams<T>) => (\r\n <Box className={activeFiltersPanelClasses.item}>\r\n <Typography variant='caption' sx={{ fontWeight: 700 }}>\r\n {p.label || p.field?.toString()}:\r\n </Typography>\r\n <Box className={activeFiltersPanelClasses.itemContent}>\r\n {p.items.map((item) => (\r\n <Chip\r\n key={item.value}\r\n clickable\r\n size='small'\r\n label={item.label || item.value}\r\n className={activeFiltersPanelClasses.itemChip}\r\n onDelete={() => {\r\n if (p.isQuickSearch) {\r\n this.removeQuickSearch(item)\r\n return\r\n }\r\n if (!p.field) return\r\n this.removeFilter(p.field, item)\r\n }}\r\n />\r\n ))}\r\n </Box>\r\n </Box>\r\n )\r\n\r\n renderQuickSearch() {\r\n const val = this.dataViewContext.filterState?.quickSearch || []\r\n const list = (Array.isArray(val) ? val : [val]).map((value) => ({ value }))\r\n if (!list || list.length === 0) return <></>\r\n return this.renderItems({ label: 'Quick search', items: list, isQuickSearch: true })\r\n }\r\n\r\n renderFilters = () => {\r\n const filter: IFilterMap<T> = this.dataViewContext.filterState?.filter || {}\r\n const keys = Object.keys(filter) as Array<keyof T>\r\n if (keys.length === 0) return <></>\r\n return keys.map((key) => {\r\n const filterItems = (filter[key] ?? []) as IFilterItem[]\r\n const items = filterItems.reduce<IItemBase[]>((acc, item) => {\r\n if (!!item.value) acc.push({ value: item.value?.toString(), label: item.label })\r\n return acc\r\n }, [])\r\n return <Fragment key={key.toString()}>{this.renderItems({ field: key, label: key.toString(), items })}</Fragment>\r\n })\r\n }\r\n\r\n renderSort = () => {\r\n const sort = this.dataViewContext.filterState?.sort\r\n if (!sort) return <></>\r\n\r\n const fieldConfig = this.dataViewContext.filterBarConfigs.fields?.[sort.field]\r\n const fieldLabel = fieldConfig?.label || sort.field.toString()\r\n const sortConfig = mapSortConfigs[sort.direction]\r\n\r\n return (\r\n <Box className={activeFiltersPanelClasses.item}>\r\n <Typography variant='caption' sx={{ fontWeight: 700 }}>\r\n Sort:\r\n </Typography>\r\n <Box className={activeFiltersPanelClasses.itemContent}>\r\n <Chip\r\n clickable\r\n size='small'\r\n label={\r\n <Box sx={{ display: 'flex', alignItems: 'center', gap: 0.5 }}>\r\n <span>{fieldLabel}</span>\r\n {sortConfig.icon}\r\n </Box>\r\n }\r\n className={activeFiltersPanelClasses.itemChip}\r\n onClick={this.toggleSortDirection}\r\n onDelete={() => this.removeSort()}\r\n title={`${fieldLabel} - ${sortConfig.title}`}\r\n />\r\n </Box>\r\n </Box>\r\n )\r\n }\r\n\r\n removeFilter = (field: keyof T, item: IItemBase) => {\r\n const store = createFilterStore(this.dataViewContext.filterState).removeFilterItem(field, item.value, { reason: 'field' })\r\n this.dataViewContext.onFilterStateChange(store.build())\r\n }\r\n\r\n removeQuickSearch = (item: IItemBase) => {\r\n const store = createFilterStore(this.dataViewContext.filterState).removeQuickSearchItem(item.value, { reason: 'quickSearch' })\r\n this.dataViewContext.onFilterStateChange(store.build())\r\n }\r\n\r\n removeSort = () => {\r\n const store = createFilterStore(this.dataViewContext.filterState).removeSort({ reason: 'sort' })\r\n this.dataViewContext.onFilterStateChange(store.build())\r\n }\r\n\r\n toggleSortDirection = () => {\r\n const store = createFilterStore(this.dataViewContext.filterState).toggleSortDirection({ reason: 'sort' })\r\n this.dataViewContext.onFilterStateChange(store.build())\r\n }\r\n\r\n handleClearAll = () => {\r\n // Trực tiếp clear data, logic đóng sẽ được xử lý tự động\r\n const store = createFilterStore(this.dataViewContext.filterState).reset()\r\n this.dataViewContext.onFilterStateChange(store.build())\r\n }\r\n }\r\n\r\n return ActiveFiltersPanel\r\n}\r\n\r\nexport default createActiveFiltersPanel\r\n\r\nconst Wrap = styled(Box)({\r\n position: 'relative',\r\n [`.${activeFiltersPanelClasses.content}`]: {\r\n display: 'flex',\r\n alignItems: 'center',\r\n flexWrap: 'wrap',\r\n gap: '8px'\r\n },\r\n [`.${activeFiltersPanelClasses.item}`]: {\r\n display: 'flex',\r\n border: 'dashed 1px var(--color-divider, rgba(145 160 170 / 20%))',\r\n borderRadius: '4px',\r\n alignItems: 'center',\r\n padding: '6px 8px',\r\n gap: '8px'\r\n },\r\n [`.${activeFiltersPanelClasses.itemContent}`]: {\r\n display: 'flex',\r\n gap: '4px'\r\n },\r\n [`.${activeFiltersPanelClasses.itemChip}`]: {\r\n borderRadius: '4px'\r\n },\r\n [`.${activeFiltersPanelClasses.overlay}`]: {\r\n position: 'absolute',\r\n top: 0,\r\n left: 0,\r\n width: '100%',\r\n height: '100%',\r\n backdropFilter: 'blur(1px)'\r\n }\r\n})\r\n"],"names":["activeFiltersPanelClasses","root","content","item","itemContent","itemChip","removeButton","overlay","createActiveFiltersPanel","ActiveFiltersPanel","props","_this","_classCallCheck","_callSuper","_defineProperty","setState","isClosing","p","_p$field","_jsxs","Box","className","children","Typography","variant","sx","fontWeight","label","field","toString","_jsx","items","map","Chip","clickable","size","value","onDelete","isQuickSearch","removeQuickSearch","removeFilter","_this$dataViewContext","filter","dataViewContext","filterState","keys","Object","length","key","_filter$key","reduce","acc","_item$value","push","Fragment","renderItems","_this$dataViewContext2","_this$dataViewContext3","sort","fieldConfig","filterBarConfigs","fields","fieldLabel","sortConfig","mapSortConfigs","direction","display","alignItems","gap","icon","onClick","toggleSortDirection","removeSort","title","concat","store","createFilterStore","removeFilterItem","reason","onFilterStateChange","build","removeQuickSearchItem","reset","state","data","_inherits","Component","_createClass","_this2","this","mapDataViewContext","context","defaultValue","isEmpty","Collapse","in","timeout","unmountOnExit","orientation","onExited","handleAnimationExited","Wrap","renderSort","renderQuickSearch","renderFilters","ClearAllButton","handleClearAll","loading","_this$dataViewContext4","val","quickSearch","list","Array","isArray","styled","position","flexWrap","border","borderRadius","padding","top","left","width","height","backdropFilter"],"mappings":"+fAOO,IAAMA,EAA4B,CACvCC,KAAM,0BACNC,QAAS,6BACTC,KAAM,0BACNC,YAAa,iCACbC,SAAU,8BACVC,aAAc,kCACdC,QAAS,8BAmBX,SAASC,IAmJP,kBA/IE,SAAAC,EAAYC,GAA+B,IAAAC,EAKxC,OALwCC,OAAAH,GACzCE,EAAAE,EAAAJ,KAAAA,GAAMC,IAORI,EAAAH,EAAA,yBACgC,WAC9BA,EAAKI,SAAS,CAAEC,WAAW,OAC5BF,EAAAH,EAwBa,eAAA,SAACM,GAAwB,IAAAC,EAAA,OACrCC,EAACC,EAAG,CAACC,UAAWrB,EAA0BG,KAAImB,SAAA,CAC5CH,EAACI,EAAU,CAACC,QAAQ,UAAUC,GAAI,CAAEC,WAAY,KAAKJ,SAAA,CAClDL,EAAEU,QAAgBT,QAAXA,EAAID,EAAEW,iBAAKV,SAAPA,EAASW,YACV,OACbC,EAACV,EAAG,CAACC,UAAWrB,EAA0BI,YAAWkB,SAClDL,EAAEc,MAAMC,KAAI,SAAC7B,GAAI,OAChB2B,EAACG,EAAI,CAEHC,WACA,EAAAC,KAAK,QACLR,MAAOxB,EAAKwB,OAASxB,EAAKiC,MAC1Bf,UAAWrB,EAA0BK,SACrCgC,SAAU,WACJpB,EAAEqB,cACJ3B,EAAK4B,kBAAkBpC,GAGpBc,EAAEW,OACPjB,EAAK6B,aAAavB,EAAEW,MAAOzB,EAC7B,GAZKA,EAAKiC,MAcb,YAGNtB,EAAAH,EAAA,iBASe,WAAK,IAAA8B,EACbC,GAAwD,QAAhCD,EAAA9B,EAAKgC,gBAAgBC,mBAArBH,IAAgCA,OAAhCA,EAAAA,EAAkCC,SAAU,CAAE,EACtEG,EAAOC,OAAOD,KAAKH,GACzB,OAAoB,IAAhBG,EAAKE,OAAqBjB,QACvBe,EAAKb,KAAI,SAACgB,GAAO,IAAAC,EAEhBlB,GAD0BkB,QAAfA,EAAIP,EAAOM,UAAIC,IAAAA,EAAAA,EAAI,IACVC,QAAoB,SAACC,EAAKhD,GAAQ,IAAAiD,EAE1D,OADMjD,EAAKiC,OAAOe,EAAIE,KAAK,CAAEjB,MAAiBgB,QAAZA,EAAEjD,EAAKiC,aAALgB,IAAUA,OAAVA,EAAAA,EAAYvB,WAAYF,MAAOxB,EAAKwB,QACjEwB,CACR,GAAE,IACH,OAAOrB,EAACwB,EAA+B,CAAAhC,SAAAX,EAAK4C,YAAY,CAAE3B,MAAOoB,EAAKrB,MAAOqB,EAAInB,WAAYE,MAAAA,KAAvEiB,EAAInB,WAC5B,OACDf,EAAAH,EAAA,cAEY,WAAK,IAAA6C,EAAAC,EACVC,EAAuCF,QAAnCA,EAAG7C,EAAKgC,gBAAgBC,mBAArBY,IAAgCA,OAAhCA,EAAAA,EAAkCE,KAC/C,IAAKA,EAAM,OAAO5B,QAElB,IAAM6B,EAA0D,QAA/CF,EAAG9C,EAAKgC,gBAAgBiB,iBAAiBC,cAAtCJ,IAA4CA,OAA5CA,EAAAA,EAA+CC,EAAK9B,OAClEkC,GAAaH,aAAAA,EAAAA,EAAahC,QAAS+B,EAAK9B,MAAMC,WAC9CkC,EAAaC,EAAeN,EAAKO,WAEvC,OACE9C,EAACC,EAAI,CAAAC,UAAWrB,EAA0BG,KAAImB,SAAA,CAC5CQ,EAACP,GAAWC,QAAQ,UAAUC,GAAI,CAAEC,WAAY,KAEnCJ,SAAA,UACbQ,EAACV,EAAG,CAACC,UAAWrB,EAA0BI,YACxCkB,SAAAQ,EAACG,EAAI,CACHC,WAAS,EACTC,KAAK,QACLR,MACER,EAACC,EAAI,CAAAK,GAAI,CAAEyC,QAAS,OAAQC,WAAY,SAAUC,IAAK,IACrD9C,SAAA,CAAAQ,EAAA,OAAA,CAAAR,SAAOwC,IACNC,EAAWM,QAGhBhD,UAAWrB,EAA0BK,SACrCiE,QAAS3D,EAAK4D,oBACdlC,SAAU,WAAF,OAAQ1B,EAAK6D,YAAY,EACjCC,MAAK,GAAAC,OAAKZ,SAAUY,OAAMX,EAAWU,iBAK9C3D,EAAAH,EAAA,gBAEc,SAACiB,EAAgBzB,GAC9B,IAAMwE,EAAQC,EAAkBjE,EAAKgC,gBAAgBC,aAAaiC,iBAAiBjD,EAAOzB,EAAKiC,MAAO,CAAE0C,OAAQ,UAChHnE,EAAKgC,gBAAgBoC,oBAAoBJ,EAAMK,YAChDlE,EAAAH,EAEmB,qBAAA,SAACR,GACnB,IAAMwE,EAAQC,EAAkBjE,EAAKgC,gBAAgBC,aAAaqC,sBAAsB9E,EAAKiC,MAAO,CAAE0C,OAAQ,gBAC9GnE,EAAKgC,gBAAgBoC,oBAAoBJ,EAAMK,YAChDlE,EAAAH,EAAA,cAEY,WACX,IAAMgE,EAAQC,EAAkBjE,EAAKgC,gBAAgBC,aAAa4B,WAAW,CAAEM,OAAQ,SACvFnE,EAAKgC,gBAAgBoC,oBAAoBJ,EAAMK,YAChDlE,EAAAH,EAAA,uBAEqB,WACpB,IAAMgE,EAAQC,EAAkBjE,EAAKgC,gBAAgBC,aAAa2B,oBAAoB,CAAEO,OAAQ,SAChGnE,EAAKgC,gBAAgBoC,oBAAoBJ,EAAMK,YAChDlE,EAAAH,EAAA,kBAEgB,WAEf,IAAMgE,EAAQC,EAAkBjE,EAAKgC,gBAAgBC,aAAasC,QAClEvE,EAAKgC,gBAAgBoC,oBAAoBJ,EAAMK,YAzI/CrE,EAAKwE,MAAQ,CACXC,KAAM,KACNpE,WAAW,GACZL,CACH,CAAC,OAAA0E,EAAA5E,EAT8B6E,GAS9BC,EAAA9E,EAAA,CAAA,CAAAuC,IAAA,SAAAZ,MAOD,WAAM,IAAAoD,EAAAC,KACJ,OAAOC,GAAmB,SAACC,GAEzB,GADAH,EAAK7C,gBAAkBgD,GAClBH,EAAK7C,gBAAiB,OAAOb,QAClC,IAAQ8D,EAAiBJ,EAAK7C,gBAAgBiB,iBAAtCgC,aACFC,EAAUjB,EAAkBY,EAAK7C,gBAAgBC,YAAagD,GAAcC,UAClF,OACE/D,EAACgE,EAAQ,CAACC,IAAKF,EAASG,QAAS,IAAKC,eAAc,EAAAC,YAAY,WAAWC,SAAUX,EAAKY,sBACxF9E,SAAAH,EAACkF,EAAK,CAAAhF,UAAWrB,EAA0BC,KACzCqB,SAAA,CAAAH,EAACC,EAAI,CAAAC,UAAWrB,EAA0BE,QACvCoB,SAAA,CAAAkE,EAAKc,aACLd,EAAKe,oBACLf,EAAKgB,iBACJX,GAAW/D,EAAC2E,GAAepF,UAAWrB,EAA0BM,aAAcgE,QAASkB,EAAKkB,oBAE/FlB,EAAK9E,MAAMiG,SAAW7E,EAACV,EAAI,CAAAC,UAAWrB,EAA0BO,cAIzE,GACF,GAAC,CAAAyC,IAAA,oBAAAZ,MA6BD,WAAiB,IAAAwE,EACTC,GAAsC,QAAhCD,EAAAnB,KAAK9C,gBAAgBC,mBAArBgE,IAAgCA,OAAhCA,EAAAA,EAAkCE,cAAe,GACvDC,GAAQC,MAAMC,QAAQJ,GAAOA,EAAM,CAACA,IAAM7E,KAAI,SAACI,GAAK,MAAM,CAAEA,MAAAA,EAAO,IACzE,OAAK2E,GAAwB,IAAhBA,EAAKhE,OACX0C,KAAKlC,YAAY,CAAE5B,MAAO,eAAgBI,MAAOgF,EAAMzE,eAAe,IADtCR,OAEzC,IAAC,GA6EL,CAIA,IAAMuE,EAAOa,EAAO9F,EAAP8F,CAAWpG,EAAAA,EAAAA,EAAAA,EAAAA,EAAA,CACtBqG,SAAU,YAAU,IAAAzC,OACf1E,EAA0BE,SAAY,CACzCgE,QAAS,OACTC,WAAY,SACZiD,SAAU,OACVhD,IAAK,YACNM,OACI1E,EAA0BG,MAAS,CACtC+D,QAAS,OACTmD,OAAQ,2DACRC,aAAc,MACdnD,WAAY,SACZoD,QAAS,UACTnD,IAAK,YACNM,OACI1E,EAA0BI,aAAgB,CAC7C8D,QAAS,OACTE,IAAK,YACNM,OACI1E,EAA0BK,UAAa,CAC1CiH,aAAc,YACf5C,OACI1E,EAA0BO,SAAY,CACzC4G,SAAU,WACVK,IAAK,EACLC,KAAM,EACNC,MAAO,OACPC,OAAQ,OACRC,eAAgB"}
@@ -0,0 +1,2 @@
1
+ import{inherits as e,createClass as t,objectSpread2 as i,classCallCheck as o,callSuper as l,defineProperty as n}from"../_virtual/_rollupPluginBabelHelpers.js";import{jsxs as r,jsx as a,Fragment as s}from"react/jsx-runtime";import{Component as d}from"react";import{styled as u,Box as v}from"@mui/material";import{SortButton as f}from"./ui.units.js";import{createViewMode as p}from"./create.view-mode.js";import{defaultViewMode as h,ViewModeButtons as g}from"./view-mode.units.js";import{getViewModeFromURL as c,syncViewModeToURL as C}from"./query-param-url.js";import{defaultFilterBarState as m,DataViewContext as S}from"./context.js";import{createFilterBar as w}from"./create.filter-bar.js";import M from"./scroll-tracking.js";import{createPaginationBar as y}from"./create.pagination-bar.js";import{createPopperPanel as B}from"./create.popper-panel.js";import P from"./create.active-filters-panel.js";function H(u){var H=w(),b=B(),V=P(),k=p(u.viewMode),x=y();return function(){function p(e){var t;return o(this,p),t=l(this,p,[e]),n(t,"mergeConfig",(function(e){var i,o,l;t.configCache={filterBar:Object.assign({},u.filterBar,null===(i=e.slots)||void 0===i?void 0:i.filterBarConfigs),viewMode:null===(o=e.slots)||void 0===o?void 0:o.viewModeConfigs,paginationBar:Object.assign({},u.paginationBar,null===(l=e.slots)||void 0===l?void 0:l.paginationBarConfigs)}})),n(t,"configCache",{}),n(t,"refFilterButton",null),n(t,"refSortButton",null),n(t,"renderFooter",(function(){var e,o,l,n,r=(null===(e=t.props.slots)||void 0===e?void 0:e.footerProps)||{};return a(F,i(i({},r.wrapProps),{},{children:!1!==r.enablePagination&&a(x,i({count:null!==(o=null===(l=t.props.data)||void 0===l?void 0:l.totalItems)&&void 0!==o?o:0,defaultFilter:null===(n=t.internalConfig.filterBar)||void 0===n?void 0:n.defaultValue,filter:t.filterState,onChange:t.onFilterStateChangeHandler},t.internalConfig.paginationBar))}))})),n(t,"onViewModeChangeHandler",(function(e){t.setState({viewMode:e},(function(){var i,o;if(t.props.syncViewModeToURL){var l,n,r,a,s=null!==(l=null!==(n=null===(r=t.internalConfig.viewMode)||void 0===r?void 0:r.defaultValue)&&void 0!==n?n:null===(a=u.viewMode)||void 0===a?void 0:a.defaultValue)&&void 0!==l?l:h;C({viewMode:e,defaultViewMode:s})}null===(i=(o=t.props).onViewModeChange)||void 0===i||i.call(o,e)}))})),n(t,"onKeywordChangeHandler",(function(e){return t.setState({keyword:e})})),n(t,"onScrollChangeHandler",(function(e){return t.setState({scrolled:e.isScrolled})})),n(t,"onPopperPanelChangeHandler",(function(e,i){return t.setState({anchorEl:e,area:i})})),n(t,"onClearHandler",(function(){return t.setState(m)})),n(t,"onPanelCloseHandler",(function(){t.setState({anchorEl:null,area:void 0,keyword:""})})),n(t,"onFilterStateChangeHandler",(function(e){t.props.filter||t.setState(i(i({},m),{},{filterState:e})),t.props.onFilterChange&&t.props.onFilterChange(e),t.props.filter&&t.setState(m)})),t.mergeConfig(e),t.state=t.getDefaultState(e),t}return e(p,d),t(p,[{key:"getDefaultState",value:function(e){var t,o,l,n,r,a,s=null!==(t=null!==(o=null===(l=e.slots)||void 0===l||null===(l=l.viewModeConfigs)||void 0===l?void 0:l.defaultValue)&&void 0!==o?o:null===(n=u.viewMode)||void 0===n?void 0:n.defaultValue)&&void 0!==t?t:h,d=e.syncViewModeToURL?c({defaultViewMode:s}):s;return i(i({},m),{},{filterState:null!==(r=null===(a=this.internalConfig.filterBar)||void 0===a?void 0:a.defaultValue)&&void 0!==r?r:{},viewMode:d})}},{key:"filterState",get:function(){var e;return null!==(e=this.props.filter)&&void 0!==e?e:this.state.filterState}},{key:"viewMode",get:function(){var e;return null!==(e=this.props.viewMode)&&void 0!==e?e:this.state.viewMode}},{key:"internalConfig",get:function(){return this.configCache}},{key:"shouldComponentUpdate",value:function(e){var t,i,o,l,n=JSON.stringify(null===(t=e.slots)||void 0===t?void 0:t.filterBarConfigs)!==JSON.stringify(null===(i=this.props.slots)||void 0===i?void 0:i.filterBarConfigs),r=JSON.stringify(null===(o=e.slots)||void 0===o?void 0:o.viewModeConfigs)!==JSON.stringify(null===(l=this.props.slots)||void 0===l?void 0:l.viewModeConfigs);return(n||r)&&this.mergeConfig(e),!0}},{key:"render",value:function(){var e,t,o,l,n,d,u,p,h,c,C,m,w,y,B,P,F={keyword:this.state.keyword.trim(),filterBarConfigs:null!==(e=this.internalConfig.filterBar)&&void 0!==e?e:{},filterState:this.filterState,anchorEl:this.state.anchorEl,area:this.state.area,viewMode:this.state.viewMode,scrolled:this.state.scrolled,onFilterStateChange:this.onFilterStateChangeHandler,onKeywordChange:this.onKeywordChangeHandler,onPopperPanelChange:this.onPopperPanelChangeHandler,onPanelClose:this.onPanelCloseHandler,onClear:this.onClearHandler};return r(S.Provider,{value:F,children:[(null===(t=this.internalConfig.filterBar)||void 0===t?void 0:t.enableSticky)&&a(M,{onChange:this.onScrollChangeHandler}),null===(o=this.props.slots)||void 0===o||null===(o=o.filterSlots)||void 0===o?void 0:o.above,a(H,{slots:i(i({},null===(l=this.props.slots)||void 0===l?void 0:l.primaryInputSlots),{},{right:r(s,{children:[(null===(n=this.internalConfig.filterBar)||void 0===n?void 0:n.enableSort)&&a(f,{}),null===(d=this.props.slots)||void 0===d||null===(d=d.primaryInputSlots)||void 0===d?void 0:d.right]})}),children:a(b,{})}),null===(u=this.props.slots)||void 0===u||null===(u=u.filterSlots)||void 0===u?void 0:u.below,null===(p=this.props.slots)||void 0===p||null===(p=p.activeFiltersPanelSlots)||void 0===p?void 0:p.above,r(j,{children:[a(g,{value:this.state.viewMode,onChange:this.onViewModeChangeHandler}),null===(h=this.props.slots)||void 0===h||null===(h=h.activeFiltersPanelSlots)||void 0===h?void 0:h.left,a(V,{loading:this.props.loading}),a(v,{sx:{flex:1}}),this.props.enablePaginationTop&&a(x,i({count:null!==(c=null===(C=this.props.data)||void 0===C?void 0:C.totalItems)&&void 0!==c?c:0,defaultFilter:null===(m=this.internalConfig.filterBar)||void 0===m?void 0:m.defaultValue,filter:this.filterState,onChange:this.onFilterStateChangeHandler},this.internalConfig.paginationBar)),null===(w=this.props.slots)||void 0===w||null===(w=w.activeFiltersPanelSlots)||void 0===w?void 0:w.right]}),null===(y=this.props.slots)||void 0===y||null===(y=y.activeFiltersPanelSlots)||void 0===y?void 0:y.below,a(k,{data:null!==(B=null===(P=this.props.data)||void 0===P?void 0:P.items)&&void 0!==B?B:[],viewMode:this.viewMode,loading:this.props.loading,error:this.props.error,slots:this.internalConfig.viewMode}),this.renderFooter()]})}}])}()}var j=u(v)({display:"flex",alignItems:"center",gap:"8px",marginBottom:"8px",minHeight:"var(--filter-bar-height, 40px)"}),F=u(v)({display:"flex",justifyContent:"flex-end",width:"100%"});export{H as default};
2
+ //# sourceMappingURL=create.data-view.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"create.data-view.js","sources":["../../src/data-view/create.data-view.tsx"],"sourcesContent":["import React, { Component, ComponentType } from 'react'\r\nimport { Box, BoxProps, styled } from '@mui/material'\r\nimport { SortButton } from './ui.units'\r\nimport { createViewMode } from './create.view-mode'\r\nimport { defaultViewMode, ViewModeButtons } from './view-mode.units'\r\nimport { getViewModeFromURL, syncViewModeToURL } from './query-param-url'\r\nimport { EViewMode, IViewModeConfigs, IViewModeValidModel } from './view-mode.types'\r\nimport { IFilterBarConfigs, IFilterState, IFilterStateChangeHandler, IViewData } from './types'\r\nimport { defaultFilterBarState, DataViewContext, IDataViewState, IDataViewContext, OnPanelValueChange } from './context'\r\nimport createFilterBar, { IFilterBarSlots } from './create.filter-bar'\r\nimport ScrollTracking, { IScrollTrackingData } from './scroll-tracking'\r\nimport createPaginationBar, { IPaginationBarConfigs } from './create.pagination-bar'\r\nimport createPopperPanel from './create.popper-panel'\r\nimport createActiveFiltersPanel from './create.active-filters-panel'\r\n\r\nexport const filterBarClasses = {\r\n root: 'FilterBar-root',\r\n content: 'FilterBar-content',\r\n input: 'FilterBar-input',\r\n inputWrap: 'FilterBar-inputWrap',\r\n label: 'FilterBar-label',\r\n button: 'FilterBar-button',\r\n spacing: 'FilterBar-spacing',\r\n panel: 'FilterBar-panel',\r\n sticky: 'FilterBar-sticky',\r\n shadow: 'FilterBar-shadow'\r\n}\r\n\r\nexport interface IFilterBarInsertSlots {\r\n below?: React.ReactNode\r\n above?: React.ReactNode\r\n left?: React.ReactNode\r\n right?: React.ReactNode\r\n}\r\n\r\nexport interface IDataViewSlots<T extends IViewModeValidModel> {\r\n filterWrapProps?: BoxProps\r\n filterSlots?: IFilterBarInsertSlots\r\n activeFiltersPanelSlots?: IFilterBarInsertSlots\r\n primaryInputSlots?: IFilterBarSlots\r\n filterBarConfigs?: IFilterBarConfigs<T>\r\n viewModeConfigs?: IViewModeConfigs<T>\r\n paginationBarConfigs?: IPaginationBarConfigs\r\n footerProps?: {\r\n wrapProps?: BoxProps\r\n enablePagination?: boolean\r\n }\r\n}\r\n\r\nexport interface IDataViewProps<T extends IViewModeValidModel> {\r\n loading?: boolean\r\n error?: string\r\n data?: IViewData<T>\r\n filter?: IFilterState<T>\r\n onFilterChange?: (value: IFilterState<T>) => void\r\n viewMode?: EViewMode\r\n onViewModeChange?: (value: EViewMode) => void\r\n syncViewModeToURL?: boolean\r\n enablePaginationTop?: boolean\r\n slots?: IDataViewSlots<T>\r\n}\r\n\r\nexport interface IDataViewConfigs<T extends IViewModeValidModel> {\r\n filterBar?: IFilterBarConfigs<T>\r\n viewMode?: IViewModeConfigs<T>\r\n paginationBar?: IPaginationBarConfigs\r\n}\r\n\r\nfunction createDataView<T extends IViewModeValidModel>(configs: IDataViewConfigs<T>): ComponentType<IDataViewProps<T>> {\r\n const InputInstance = createFilterBar<T>()\r\n const PopperPanelInstance = createPopperPanel<T>()\r\n const ActiveFiltersPanelInstance = createActiveFiltersPanel<T>()\r\n const ViewModeInstance = createViewMode<T>(configs.viewMode)\r\n const PaginationBarInstance = createPaginationBar<T>()\r\n\r\n class DataView extends Component<IDataViewProps<T>, IDataViewState<T>> {\r\n constructor(props: IDataViewProps<T>) {\r\n super(props)\r\n this.mergeConfig(props)\r\n this.state = this.getDefaultState(props)\r\n }\r\n\r\n private getDefaultState(currentProps: IDataViewProps<T>): IDataViewState<T> {\r\n const defaultValue = currentProps.slots?.viewModeConfigs?.defaultValue ?? configs.viewMode?.defaultValue ?? defaultViewMode\r\n const viewMode = currentProps.syncViewModeToURL ? getViewModeFromURL<T>({ defaultViewMode: defaultValue }) : defaultValue\r\n return {\r\n ...defaultFilterBarState,\r\n filterState: this.internalConfig.filterBar?.defaultValue ?? {},\r\n viewMode\r\n }\r\n }\r\n\r\n get filterState(): IFilterState<T> {\r\n return this.props.filter ?? this.state.filterState\r\n }\r\n\r\n get viewMode(): EViewMode | undefined {\r\n return this.props.viewMode ?? this.state.viewMode\r\n }\r\n\r\n private mergeConfig = (currentProps: IDataViewProps<T>) => {\r\n this.configCache = {\r\n filterBar: Object.assign({}, configs.filterBar, currentProps.slots?.filterBarConfigs),\r\n viewMode: currentProps.slots?.viewModeConfigs,\r\n paginationBar: Object.assign({}, configs.paginationBar, currentProps.slots?.paginationBarConfigs)\r\n }\r\n }\r\n\r\n private configCache: IDataViewConfigs<T> = {}\r\n get internalConfig() {\r\n return this.configCache\r\n }\r\n\r\n shouldComponentUpdate(nextProps: Readonly<IDataViewProps<T>>): boolean {\r\n const filterDiff = JSON.stringify(nextProps.slots?.filterBarConfigs) !== JSON.stringify(this.props.slots?.filterBarConfigs)\r\n const viewModeDiff = JSON.stringify(nextProps.slots?.viewModeConfigs) !== JSON.stringify(this.props.slots?.viewModeConfigs)\r\n if (filterDiff || viewModeDiff) this.mergeConfig(nextProps)\r\n return true\r\n }\r\n\r\n refFilterButton: HTMLButtonElement | null = null\r\n refSortButton: HTMLButtonElement | null = null\r\n render() {\r\n const mapContext: IDataViewContext<T> = {\r\n keyword: this.state.keyword.trim(),\r\n filterBarConfigs: this.internalConfig.filterBar ?? {},\r\n filterState: this.filterState,\r\n anchorEl: this.state.anchorEl,\r\n area: this.state.area,\r\n viewMode: this.state.viewMode,\r\n scrolled: this.state.scrolled,\r\n onFilterStateChange: this.onFilterStateChangeHandler,\r\n onKeywordChange: this.onKeywordChangeHandler,\r\n onPopperPanelChange: this.onPopperPanelChangeHandler,\r\n onPanelClose: this.onPanelCloseHandler,\r\n onClear: this.onClearHandler\r\n }\r\n return (\r\n <DataViewContext.Provider value={mapContext}>\r\n {this.internalConfig.filterBar?.enableSticky && <ScrollTracking onChange={this.onScrollChangeHandler} />}\r\n {this.props.slots?.filterSlots?.above}\r\n <InputInstance\r\n slots={{\r\n ...this.props.slots?.primaryInputSlots,\r\n right: (\r\n <>\r\n {this.internalConfig.filterBar?.enableSort && <SortButton />}\r\n {this.props.slots?.primaryInputSlots?.right}\r\n </>\r\n )\r\n }}\r\n >\r\n <PopperPanelInstance />\r\n </InputInstance>\r\n {this.props.slots?.filterSlots?.below}\r\n {this.props.slots?.activeFiltersPanelSlots?.above}\r\n <FilterBarPanel>\r\n <ViewModeButtons value={this.state.viewMode} onChange={this.onViewModeChangeHandler} />\r\n {this.props.slots?.activeFiltersPanelSlots?.left}\r\n <ActiveFiltersPanelInstance loading={this.props.loading} />\r\n <Box sx={{ flex: 1 }} />\r\n {this.props.enablePaginationTop && (\r\n <PaginationBarInstance\r\n count={this.props.data?.totalItems ?? 0}\r\n defaultFilter={this.internalConfig.filterBar?.defaultValue}\r\n filter={this.filterState}\r\n onChange={this.onFilterStateChangeHandler}\r\n {...this.internalConfig.paginationBar}\r\n />\r\n )}\r\n {this.props.slots?.activeFiltersPanelSlots?.right}\r\n </FilterBarPanel>\r\n {this.props.slots?.activeFiltersPanelSlots?.below}\r\n <ViewModeInstance\r\n data={this.props.data?.items ?? []}\r\n viewMode={this.viewMode}\r\n loading={this.props.loading}\r\n error={this.props.error}\r\n slots={this.internalConfig.viewMode}\r\n />\r\n {this.renderFooter()}\r\n </DataViewContext.Provider>\r\n )\r\n }\r\n\r\n renderFooter = () => {\r\n const temp = this.props.slots?.footerProps || {}\r\n return (\r\n <FooterWrap {...temp.wrapProps}>\r\n {temp.enablePagination !== false && (\r\n <PaginationBarInstance\r\n count={this.props.data?.totalItems ?? 0}\r\n defaultFilter={this.internalConfig.filterBar?.defaultValue}\r\n filter={this.filterState}\r\n onChange={this.onFilterStateChangeHandler}\r\n {...this.internalConfig.paginationBar}\r\n />\r\n )}\r\n </FooterWrap>\r\n )\r\n }\r\n\r\n onViewModeChangeHandler = (value: EViewMode) => {\r\n this.setState({ viewMode: value }, () => {\r\n if (this.props.syncViewModeToURL) {\r\n const dViewMode = this.internalConfig.viewMode?.defaultValue ?? configs.viewMode?.defaultValue ?? defaultViewMode\r\n syncViewModeToURL({ viewMode: value, defaultViewMode: dViewMode })\r\n }\r\n this.props.onViewModeChange?.(value)\r\n })\r\n }\r\n\r\n onKeywordChangeHandler = (keyword: string) => this.setState({ keyword })\r\n\r\n onScrollChangeHandler = (data: IScrollTrackingData) => this.setState({ scrolled: data.isScrolled })\r\n\r\n onPopperPanelChangeHandler: OnPanelValueChange = (anchorEl, area) => this.setState({ anchorEl, area })\r\n\r\n onClearHandler = () => this.setState(defaultFilterBarState)\r\n\r\n onPanelCloseHandler = () => {\r\n this.setState({ anchorEl: null, area: undefined, keyword: '' })\r\n }\r\n\r\n onFilterStateChangeHandler: IFilterStateChangeHandler<T> = (filterState: IFilterState<T>) => {\r\n if (!this.props.filter) this.setState({ ...defaultFilterBarState, filterState })\r\n this.props.onFilterChange && this.props.onFilterChange(filterState)\r\n if (!!this.props.filter) this.setState(defaultFilterBarState)\r\n }\r\n }\r\n\r\n return DataView\r\n}\r\n\r\nexport default createDataView\r\n\r\nconst FilterBarPanel = styled(Box)({\r\n display: 'flex',\r\n alignItems: 'center',\r\n gap: '8px',\r\n marginBottom: '8px',\r\n minHeight: 'var(--filter-bar-height, 40px)'\r\n})\r\n\r\nconst FooterWrap = styled(Box)({\r\n display: 'flex',\r\n justifyContent: 'flex-end',\r\n width: '100%'\r\n})\r\n"],"names":["createDataView","configs","InputInstance","createFilterBar","PopperPanelInstance","createPopperPanel","ActiveFiltersPanelInstance","createActiveFiltersPanel","ViewModeInstance","createViewMode","viewMode","PaginationBarInstance","createPaginationBar","DataView","props","_this","_classCallCheck","_callSuper","_defineProperty","currentProps","_currentProps$slots","_currentProps$slots2","_currentProps$slots3","configCache","filterBar","Object","assign","slots","filterBarConfigs","viewModeConfigs","paginationBar","paginationBarConfigs","_this$props$slots","_this$props$data$tota","_this$props$data","_this$internalConfig$","temp","footerProps","_jsx","FooterWrap","_objectSpread","wrapProps","children","enablePagination","count","data","totalItems","defaultFilter","internalConfig","defaultValue","filter","filterState","onChange","onFilterStateChangeHandler","value","setState","_this$props$onViewMod","_this$props","syncViewModeToURL","_ref","_this$internalConfig$2","_this$internalConfig$3","_configs$viewMode","dViewMode","defaultViewMode","onViewModeChange","call","keyword","scrolled","isScrolled","anchorEl","area","defaultFilterBarState","undefined","onFilterChange","mergeConfig","state","getDefaultState","_inherits","Component","_createClass","key","_ref2","_currentProps$slots$v","_currentProps$slots4","_configs$viewMode2","_this$internalConfig$4","_this$internalConfig$5","getViewModeFromURL","this","get","_this$props$filter","_this$props$viewMode","nextProps","_nextProps$slots","_this$props$slots2","_nextProps$slots2","_this$props$slots3","filterDiff","JSON","stringify","viewModeDiff","_this$internalConfig$6","_this$internalConfig$7","_this$props$slots4","_this$props$slots5","_this$internalConfig$8","_this$props$slots6","_this$props$slots7","_this$props$slots8","_this$props$slots9","_this$props$data$tota2","_this$props$data2","_this$internalConfig$9","_this$props$slots0","_this$props$slots1","_this$props$data$item","_this$props$data3","mapContext","trim","onFilterStateChange","onKeywordChange","onKeywordChangeHandler","onPopperPanelChange","onPopperPanelChangeHandler","onPanelClose","onPanelCloseHandler","onClear","onClearHandler","_jsxs","DataViewContext","Provider","enableSticky","ScrollTracking","onScrollChangeHandler","filterSlots","above","primaryInputSlots","right","_Fragment","enableSort","SortButton","below","activeFiltersPanelSlots","FilterBarPanel","ViewModeButtons","onViewModeChangeHandler","left","loading","Box","sx","flex","enablePaginationTop","items","error","renderFooter","styled","display","alignItems","gap","marginBottom","minHeight","justifyContent","width"],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ import{defineProperty as e,inherits as t,createClass as r,classCallCheck as n,callSuper as a,objectSpread2 as o}from"../_virtual/_rollupPluginBabelHelpers.js";import{jsx as i,jsxs as l}from"react/jsx-runtime";import{Component as p}from"react";import{styled as s,Box as c,colors as u,ClickAwayListener as d}from"@mui/material";import{createFilterStore as f}from"./filter-store.js";import{FilterButton as h,FilterInput as g,FilterInputAdornment as v}from"./ui.units.js";import{mapDataViewContext as b,defaultDataViewContext as C}from"./context.js";var m={root:"FilterBar-root",content:"FilterBar-content",input:"FilterBar-input",inputWrap:"FilterBar-inputWrap",label:"FilterBar-label",button:"FilterBar-button",spacing:"FilterBar-spacing",sticky:"FilterBar-sticky",shadow:"FilterBar-shadow"};function x(){var s=function(){function s(){var t;n(this,s);for(var r=arguments.length,o=new Array(r),i=0;i<r;i++)o[i]=arguments[i];return t=a(this,s,[].concat(o)),e(t,"dataViewContext",C),e(t,"refInput",null),e(t,"refBeforeInput",null),e(t,"getRootClasses",(function(){var e,r=null!==(e=t.dataViewContext.filterBarConfigs.enableSticky)&&void 0!==e&&e,n=[m.root];return r&&n.push(m.sticky),t.dataViewContext.scrolled&&n.push(m.shadow),n.join(" ")})),e(t,"handleKeyDown",(function(e){var r=e.keyCode;if(13===r)e.stopPropagation(),e.preventDefault(),t.handleEnterSearch();else if(27===r){var n;e.stopPropagation(),e.preventDefault(),null===(n=t.refInput)||void 0===n||n.blur(),t.dataViewContext.onPanelClose()}})),e(t,"handleEnterSearch",(function(){var e;if(t.dataViewContext.keyword){var r=f(t.dataViewContext.filterState);r.addQuickSearch(t.dataViewContext.keyword,{reason:"quickSearch",area:"input"});var n,a=r.build();if(null!==(e=a.details)&&void 0!==e&&e.isChanged)null===(n=t.refInput)||void 0===n||n.blur(),t.dataViewContext.onFilterStateChange(a)}})),e(t,"handleClear",(function(){var e;null===(e=t.refInput)||void 0===e||e.blur(),t.dataViewContext.onClear()})),t}return t(s,p),r(s,[{key:"render",value:function(){var e=this;return b((function(t){var r,n,a,p=t.filterBarConfigs,s=p.id;return e.dataViewContext=t,i(d,{onClickAway:function(){return t.onPopperPanelChange(null)},children:l(k,o(o({className:e.getRootClasses()},null===(r=e.props.slots)||void 0===r?void 0:r.wrapProps),{},{children:[l("div",{className:m.content,children:[null===(n=e.props.slots)||void 0===n?void 0:n.left,l("div",{className:m.inputWrap,children:[i(h,{className:m.button,onClick:function(e){t.onPopperPanelChange(e.currentTarget,"filterButton")}}),l(c,{component:"label",htmlFor:s,className:m.label,children:[i(c,{ref:function(t){e.refBeforeInput=t}}),i(g,{ref:function(t){e.refInput=t},id:s,className:m.input,placeholder:p.placeholder,onChange:function(e){return t.onKeywordChange(e.target.value)},value:t.keyword,onFocus:function(){e.refBeforeInput&&t.onPopperPanelChange(e.refBeforeInput,"input")},onKeyDown:e.handleKeyDown,endAdornment:i(v,{notes:p.notes,keyword:t.keyword,onEnterSearch:e.handleEnterSearch,onClear:e.handleClear})})]})]}),null===(a=e.props.slots)||void 0===a?void 0:a.right]}),e.props.children]}))})}))}}])}();return s}var k=s(c)((function(t){var r=t.theme;return e(e(e(e(e(e(e({marginBottom:"4px"},"&.".concat(m.sticky),{position:"sticky",top:"var(--height-header, 0)",zIndex:r.zIndex.appBar-1,backgroundColor:r.palette.background.paper}),".".concat(m.content),{display:"flex",gap:"8px",alignItems:"center",flexWrap:"wrap",padding:r.spacing(1.5,0,.75),position:"relative",backgroundColor:"#fff","&::after":{content:'""',position:"absolute",top:"100%",left:0,width:"100%",height:"6px",pointerEvents:"none",background:"linear-gradient(to bottom, rgba(0, 0, 0, 0.2), transparent)",maskImage:"linear-gradient(to right, transparent, black 20%, black 80%, transparent)",WebkitMaskImage:"linear-gradient(to right, transparent, black 20%, black 80%, transparent)",opacity:0}}),"&.".concat(m.shadow," .").concat(m.content),{"&::after":{transition:"opacity 0.2s ease-in-out",transitionDelay:"0.2s",opacity:1}}),".".concat(m.input),{input:{padding:"4px 0 5px"}}),".".concat(m.inputWrap),{flex:1,display:"flex",alignItems:"center",minHeight:"var(--filter-bar-height, 40px)",gap:"8px",borderRadius:"6px",transition:"all linear 0.2s",padding:"0 8px",backgroundColor:u.grey[50],border:"1px solid var(--color-divider, rgba(145 158 171 / 20%))","&:hover":{backgroundColor:u.grey[50],borderColor:u.blue[200]},"&:focus-within":{backgroundColor:u.grey[50],borderColor:u.blue[400],boxShadow:"0 0 0 2px ".concat(u.blue[100])}}),".".concat(m.label),{flex:1,display:"flex",alignItems:"flex-end"}),".".concat(m.spacing),{flex:1,height:"var(--filter-bar-height, 40px)"})}));export{x as createFilterBar,x as default,m as filterBarClasses};
2
+ //# sourceMappingURL=create.filter-bar.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"create.filter-bar.js","sources":["../../src/data-view/create.filter-bar.tsx"],"sourcesContent":["import React, { Component, PropsWithChildren } from 'react'\r\nimport { Box, BoxProps, ClickAwayListener, colors, styled } from '@mui/material'\r\nimport { IPositionElement } from './types'\r\nimport { createFilterStore } from './filter-store'\r\nimport { FilterButton, FilterInput, FilterInputAdornment } from './ui.units'\r\nimport { defaultDataViewContext, IDataViewContext, mapDataViewContext } from './context'\r\n\r\nexport const filterBarClasses = {\r\n root: 'FilterBar-root',\r\n content: 'FilterBar-content',\r\n input: 'FilterBar-input',\r\n inputWrap: 'FilterBar-inputWrap',\r\n label: 'FilterBar-label',\r\n button: 'FilterBar-button',\r\n spacing: 'FilterBar-spacing',\r\n panel: 'FilterBar-panel',\r\n sticky: 'FilterBar-sticky',\r\n shadow: 'FilterBar-shadow',\r\n helpText: 'FilterBar-helpText'\r\n}\r\n\r\nexport interface IFilterBarSlots extends IPositionElement<'left' | 'right'> {\r\n wrapProps?: BoxProps\r\n}\r\n\r\nexport interface IFilterBarProps extends PropsWithChildren {\r\n slots?: IFilterBarSlots\r\n}\r\n\r\nexport function createFilterBar<T>() {\r\n class FilterBar extends Component<IFilterBarProps> {\r\n dataViewContext: IDataViewContext<T> = defaultDataViewContext\r\n\r\n refInput: HTMLInputElement | null = null\r\n refBeforeInput: HTMLElement | null = null\r\n render() {\r\n return mapDataViewContext((context) => {\r\n const configs = context.filterBarConfigs\r\n const id = configs.id\r\n this.dataViewContext = context\r\n return (\r\n <ClickAwayListener onClickAway={() => context.onPopperPanelChange(null)}>\r\n <FilterWrapper className={this.getRootClasses()} {...this.props.slots?.wrapProps}>\r\n <div className={filterBarClasses.content}>\r\n {this.props.slots?.left}\r\n <div className={filterBarClasses.inputWrap}>\r\n <FilterButton\r\n className={filterBarClasses.button}\r\n onClick={(e) => {\r\n context.onPopperPanelChange(e.currentTarget, 'filterButton')\r\n }}\r\n />\r\n <Box component='label' htmlFor={id} className={filterBarClasses.label}>\r\n <Box\r\n ref={(ref: HTMLElement) => {\r\n this.refBeforeInput = ref\r\n }}\r\n />\r\n <FilterInput\r\n ref={(ref: HTMLInputElement) => {\r\n this.refInput = ref\r\n }}\r\n id={id}\r\n className={filterBarClasses.input}\r\n placeholder={configs.placeholder}\r\n onChange={(e) => context.onKeywordChange(e.target.value)}\r\n value={context.keyword}\r\n onFocus={() => {\r\n if (!this.refBeforeInput) return\r\n context.onPopperPanelChange(this.refBeforeInput, 'input')\r\n }}\r\n onKeyDown={this.handleKeyDown}\r\n endAdornment={\r\n <FilterInputAdornment\r\n notes={configs.notes}\r\n keyword={context.keyword}\r\n onEnterSearch={this.handleEnterSearch}\r\n onClear={this.handleClear}\r\n />\r\n }\r\n />\r\n </Box>\r\n </div>\r\n {this.props.slots?.right}\r\n </div>\r\n {this.props.children}\r\n </FilterWrapper>\r\n </ClickAwayListener>\r\n )\r\n })\r\n }\r\n\r\n getRootClasses = () => {\r\n const enableSticky = this.dataViewContext.filterBarConfigs.enableSticky ?? false\r\n const classes: string[] = [filterBarClasses.root]\r\n if (enableSticky) classes.push(filterBarClasses.sticky)\r\n if (this.dataViewContext.scrolled) classes.push(filterBarClasses.shadow)\r\n return classes.join(' ')\r\n }\r\n\r\n handleKeyDown: React.KeyboardEventHandler<HTMLInputElement | HTMLTextAreaElement> = (event) => {\r\n const keyCode: number = event.keyCode\r\n if (keyCode === 13) {\r\n event.stopPropagation()\r\n event.preventDefault()\r\n this.handleEnterSearch()\r\n } else if (keyCode === 27) {\r\n event.stopPropagation()\r\n event.preventDefault()\r\n this.refInput?.blur()\r\n this.dataViewContext.onPanelClose()\r\n }\r\n }\r\n\r\n handleEnterSearch = () => {\r\n if (!this.dataViewContext.keyword) return\r\n const store = createFilterStore<T>(this.dataViewContext.filterState)\r\n store.addQuickSearch(this.dataViewContext.keyword, { reason: 'quickSearch', area: 'input' })\r\n const temp = store.build()\r\n if (!!temp.details?.isChanged) {\r\n this.refInput?.blur()\r\n this.dataViewContext.onFilterStateChange(temp)\r\n }\r\n }\r\n\r\n handleClear = () => {\r\n this.refInput?.blur()\r\n this.dataViewContext.onClear()\r\n }\r\n }\r\n return FilterBar\r\n}\r\n\r\nexport default createFilterBar\r\n\r\nconst FilterWrapper = styled(Box)(({ theme }) => ({\r\n marginBottom: '4px',\r\n [`&.${filterBarClasses.sticky}`]: {\r\n position: 'sticky',\r\n top: 'var(--height-header, 0)',\r\n zIndex: theme.zIndex.appBar - 1,\r\n backgroundColor: theme.palette.background.paper\r\n },\r\n [`.${filterBarClasses.content}`]: {\r\n display: 'flex',\r\n gap: '8px',\r\n alignItems: 'center',\r\n flexWrap: 'wrap',\r\n padding: theme.spacing(1.5, 0, 0.75),\r\n position: 'relative',\r\n backgroundColor: '#fff',\r\n '&::after': {\r\n content: '\"\"',\r\n position: 'absolute',\r\n top: '100%',\r\n left: 0,\r\n width: '100%',\r\n height: '6px',\r\n pointerEvents: 'none',\r\n\r\n background: 'linear-gradient(to bottom, rgba(0, 0, 0, 0.2), transparent)',\r\n\r\n maskImage: 'linear-gradient(to right, transparent, black 20%, black 80%, transparent)',\r\n WebkitMaskImage: 'linear-gradient(to right, transparent, black 20%, black 80%, transparent)',\r\n\r\n opacity: 0\r\n }\r\n },\r\n [`&.${filterBarClasses.shadow} .${filterBarClasses.content}`]: {\r\n '&::after': {\r\n transition: 'opacity 0.2s ease-in-out',\r\n transitionDelay: '0.2s',\r\n opacity: 1\r\n }\r\n },\r\n [`.${filterBarClasses.input}`]: {\r\n input: {\r\n padding: '4px 0 5px'\r\n }\r\n },\r\n [`.${filterBarClasses.inputWrap}`]: {\r\n flex: 1,\r\n display: 'flex',\r\n alignItems: 'center',\r\n minHeight: 'var(--filter-bar-height, 40px)',\r\n gap: '8px',\r\n borderRadius: '6px',\r\n transition: 'all linear 0.2s',\r\n padding: '0 8px',\r\n backgroundColor: colors.grey[50],\r\n border: '1px solid var(--color-divider, rgba(145 158 171 / 20%))',\r\n '&:hover': {\r\n backgroundColor: colors.grey[50],\r\n borderColor: colors.blue[200]\r\n },\r\n '&:focus-within': {\r\n backgroundColor: colors.grey[50],\r\n borderColor: colors.blue[400],\r\n boxShadow: `0 0 0 2px ${colors.blue[100]}`\r\n }\r\n },\r\n [`.${filterBarClasses.label}`]: {\r\n flex: 1,\r\n display: 'flex',\r\n alignItems: 'flex-end'\r\n },\r\n [`.${filterBarClasses.spacing}`]: {\r\n flex: 1,\r\n height: 'var(--filter-bar-height, 40px)'\r\n }\r\n}))\r\n"],"names":["filterBarClasses","root","content","input","inputWrap","label","button","spacing","sticky","shadow","createFilterBar","FilterBar","_this","_classCallCheck","_len","arguments","length","args","Array","_key","_callSuper","this","concat","_defineProperty","defaultDataViewContext","_this$dataViewContext","enableSticky","dataViewContext","filterBarConfigs","classes","push","scrolled","join","event","keyCode","stopPropagation","preventDefault","handleEnterSearch","_this$refInput","refInput","blur","onPanelClose","_temp$details","keyword","store","createFilterStore","filterState","addQuickSearch","reason","area","_this$refInput2","temp","build","details","isChanged","onFilterStateChange","_this$refInput3","onClear","_inherits","Component","_createClass","key","value","_this2","mapDataViewContext","context","_this2$props$slots","_this2$props$slots2","_this2$props$slots3","configs","id","_jsx","ClickAwayListener","onClickAway","onPopperPanelChange","children","_jsxs","FilterWrapper","_objectSpread","className","getRootClasses","props","slots","wrapProps","left","FilterButton","onClick","e","currentTarget","Box","component","htmlFor","ref","refBeforeInput","FilterInput","placeholder","onChange","onKeywordChange","target","onFocus","onKeyDown","handleKeyDown","endAdornment","FilterInputAdornment","notes","onEnterSearch","handleClear","right","styled","_ref3","theme","marginBottom","position","top","zIndex","appBar","backgroundColor","palette","background","paper","display","gap","alignItems","flexWrap","padding","width","height","pointerEvents","maskImage","WebkitMaskImage","opacity","transition","transitionDelay","flex","minHeight","borderRadius","colors","grey","border","borderColor","blue","boxShadow"],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ import{defineProperty as t,inherits as e,createClass as i,classCallCheck as n,callSuper as r}from"../_virtual/_rollupPluginBabelHelpers.js";import{jsx as l,jsxs as a}from"react/jsx-runtime";import{Fragment as o,Component as d}from"react";import{styled as s,MenuList as u,Box as f,MenuItem as v,Button as c}from"@mui/material";import{createFilterStore as g}from"./filter-store.js";import{mapDataViewContext as m}from"./context.js";import{filterMenuClasses as p,getFieldsValidation as S,convertFormDataToJson as h,filterFieldValidated as y}from"./helpers.js";import{MenuWithTypeString as C,MenuWithTypeDateRange as b,MenuWithTypeDate as R,MenuWithTypeSelectMulti as x,MenuWithTypeSelect as B}from"./ui.units.js";function j(){return function(){function s(e){var i;return n(this,s),i=r(this,s,[e]),t(i,"renderForm",(function(t,e){return a("form",{onSubmit:function(n){return i.handleSubmit(n,t,e)},children:[i.renderWithMode(t,e),a(E,{children:[l(c,{size:"small",color:"inherit",onClick:t.onPanelClose,children:"Cancel"}),l(c,{size:"small",color:"primary",type:"submit",sx:{fontWeight:700},children:"Apply"})]})]})})),t(i,"renderWithMode",(function(t,e){var n,r=null===(n=t.filterBarConfigs.fields)||void 0===n?void 0:n[e];switch(null==r?void 0:r.type){case"select":return l(B,{name:e.toString(),fieldConfig:r,validationResult:i.state.validationResult,onChange:function(){return i.setState({validationResult:void 0})}});case"select-multi":return l(x,{name:e.toString(),fieldConfig:r,validationResult:i.state.validationResult,onChange:function(){return i.setState({validationResult:void 0})}});case"date":return l(R,{name:e.toString(),fieldConfig:r,validationResult:i.state.validationResult});case"date-range":return l(b,{name:e.toString(),fieldConfig:r,validationResult:i.state.validationResult});default:return l(C,{name:e.toString(),fieldConfig:r,validationResult:i.state.validationResult})}})),t(i,"handleSubmit",(function(t,e,n){null==t||t.preventDefault(),null==t||t.stopPropagation();var r=new FormData(null==t?void 0:t.currentTarget),l=i.formValidate(r,n,e);l.hasError?i.setState({validationResult:l}):i.addFilter(r,e,n)})),t(i,"formValidate",(function(t,e,i){var n=h(t),r=S(i.filterBarConfigs.fields||{})[e];if("select-multi"===(null==r?void 0:r.type)){if(0===t.getAll(e.toString()).length)return{hasError:!0,message:"Please select at least one option"}}else if("date-range"===(null==r?void 0:r.type)){var l,a,o=null===(l=t.get("".concat(e.toString(),"_start")))||void 0===l?void 0:l.toString(),d=null===(a=t.get("".concat(e.toString(),"_end")))||void 0===a?void 0:a.toString();if(!o||!d)return{hasError:!0,message:"Please select both start and end dates"};if(new Date(o)>new Date(d))return{hasError:!0,message:"Start date must be before end date"}}else{var s,u=null===(s=n[e])||void 0===s?void 0:s.toString(),f=y(null!=u?u:"",e,r);if(f.error)return{hasError:!0,message:f.message}}return{hasError:!1}})),t(i,"addFilter",(function(t,e,i){var n,r,l,a=S(e.filterBarConfigs.fields||{})[i],o=g((null==e?void 0:e.filterState)||{}),d=h(t),s=(null===(n=t.get("filterLogic"))||void 0===n?void 0:n.toString())||"and",u=(null===(r=t.get("dateLogic"))||void 0===r?void 0:r.toString())||"equals",f=(null===(l=t.get("dateRangeLogic"))||void 0===l?void 0:l.toString())||"between";if("date-range"===(null==a?void 0:a.type)){var v,c,m=null===(v=t.get("".concat(i.toString(),"_start")))||void 0===v?void 0:v.toString(),p=null===(c=t.get("".concat(i.toString(),"_end")))||void 0===c?void 0:c.toString();if(m&&p){var y={type:"date-range",startDate:m,endDate:p,dateRangeLogic:f,label:"".concat(m," to ").concat(p)};o.addFilterItem(i,y,{reason:"field",area:"filterButton"})}}else{var C=[];if("select-multi"===(null==a?void 0:a.type)){var b=d[i];Array.isArray(b)?C=b.map((function(t){return t.toString()})):b&&(C=[b.toString()])}else{var R,x=null===(R=d[i])||void 0===R?void 0:R.toString();x&&(C=[x])}C.forEach((function(t){var e,n=void 0;"select"!==(null==a?void 0:a.type)&&"select-multi"!==(null==a?void 0:a.type)||(n=null===(e=a.options.find((function(e){return e.value===t})))||void 0===e?void 0:e.label);var r={type:(null==a?void 0:a.type)||"string",value:t,label:n};"string"!==(null==a?void 0:a.type)&&(r.type=null==a?void 0:a.type),"select-multi"===(null==a?void 0:a.type)&&(r.logic=s),"date"===(null==a?void 0:a.type)&&(r.dateLogic=u),o.addFilterItem(i,r,{reason:"field",area:"filterButton"})}))}e.onFilterStateChange(o.build())})),i.state={fieldSelected:null},i}return e(s,d),i(s,[{key:"render",value:function(){var t=this;return m((function(e){var i=t.state.fieldSelected;if(i)return t.renderForm(e,i);var n=S(e.filterBarConfigs.fields||{}),r=Object.keys(n);return l(F,{className:p.list,sx:{minWidth:"200px"},children:r.map((function(i,n){var r,a,d=null===(r=e.filterBarConfigs.fields)||void 0===r?void 0:r[i];return d?l(v,{className:p.item,onClick:function(){return t.setState({fieldSelected:i,validationResult:void 0})},children:null!==(a=null==d?void 0:d.label)&&void 0!==a?a:i.toString()},i.toString()+n):l(o,{},i.toString()+n)}))})}))}}])}()}var F=s(u)(t({padding:0},".".concat(p.item),{height:"var(--filter-item-height, 40px)",padding:"0 16px","&:not(:last-child)":{borderBottom:"1px solid var(--color-divider, rgba(145 160 170 / 10%))"}})),E=s(f)({display:"flex",alignItems:"center",justifyContent:"flex-end",padding:"8px"});export{j as default};
2
+ //# sourceMappingURL=create.filter-menu.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"create.filter-menu.js","sources":["../../src/data-view/create.filter-menu.tsx"],"sourcesContent":["import React, { Component, ComponentType, Fragment } from 'react'\r\nimport { Box, Button, MenuItem, MenuList, styled } from '@mui/material'\r\nimport { createFilterStore } from './filter-store'\r\nimport { IDataViewContext, mapDataViewContext } from './context'\r\nimport { convertFormDataToJson, filterFieldValidated, filterMenuClasses, getFieldsValidation } from './helpers'\r\nimport { IFilterConfigs, IValidationResult, IFilterLogic, IFilterItem, IFilterDateLogic, IFilterDateRangeLogic } from './types'\r\nimport { MenuWithTypeSelect, MenuWithTypeSelectMulti, MenuWithTypeString, MenuWithTypeDate, MenuWithTypeDateRange } from './ui.units'\r\n\r\nexport interface IFilterMenuProps {}\r\n\r\nexport interface IFilterMenuState<T> {\r\n fieldSelected: keyof IFilterConfigs<T> | null\r\n validationResult?: IValidationResult\r\n}\r\n\r\nfunction createFilterMenu<T>(): ComponentType<IFilterMenuProps> {\r\n class FilterMenu extends Component<IFilterMenuProps, IFilterMenuState<T>> {\r\n constructor(props: IFilterMenuProps) {\r\n super(props)\r\n this.state = {\r\n fieldSelected: null\r\n }\r\n }\r\n\r\n render() {\r\n return mapDataViewContext<T>((context) => {\r\n const { fieldSelected } = this.state\r\n if (!!fieldSelected) return this.renderForm(context, fieldSelected)\r\n const fieldsValidation = getFieldsValidation<T>(context.filterBarConfigs.fields || {})\r\n const keys = Object.keys(fieldsValidation) as (keyof T)[]\r\n return (\r\n <MenuListCustom className={filterMenuClasses.list} sx={{ minWidth: '200px' }}>\r\n {keys.map((x, i) => {\r\n const item = context.filterBarConfigs.fields?.[x]\r\n if (!item) return <Fragment key={x.toString() + i} />\r\n return (\r\n <MenuItem\r\n key={x.toString() + i}\r\n className={filterMenuClasses.item}\r\n onClick={() =>\r\n this.setState({\r\n fieldSelected: x,\r\n validationResult: undefined\r\n })\r\n }\r\n >\r\n {item?.label ?? x.toString()}\r\n </MenuItem>\r\n )\r\n })}\r\n </MenuListCustom>\r\n )\r\n })\r\n }\r\n\r\n renderForm = (context: IDataViewContext<T>, fieldSelected: keyof T) => (\r\n <form onSubmit={(e) => this.handleSubmit(e, context, fieldSelected)}>\r\n {this.renderWithMode(context, fieldSelected)}\r\n <ActionWrapper>\r\n <Button size='small' color='inherit' onClick={context.onPanelClose}>\r\n Cancel\r\n </Button>\r\n <Button size='small' color='primary' type='submit' sx={{ fontWeight: 700 }}>\r\n Apply\r\n </Button>\r\n </ActionWrapper>\r\n </form>\r\n )\r\n\r\n renderWithMode = (context: IDataViewContext<T>, fieldSelected: keyof T) => {\r\n const fieldConfig = context.filterBarConfigs.fields?.[fieldSelected]\r\n switch (fieldConfig?.type) {\r\n case 'select':\r\n return (\r\n <MenuWithTypeSelect\r\n name={fieldSelected.toString()}\r\n fieldConfig={fieldConfig}\r\n validationResult={this.state.validationResult}\r\n onChange={() => this.setState({ validationResult: undefined })}\r\n />\r\n )\r\n case 'select-multi':\r\n return (\r\n <MenuWithTypeSelectMulti\r\n name={fieldSelected.toString()}\r\n fieldConfig={fieldConfig}\r\n validationResult={this.state.validationResult}\r\n onChange={() => this.setState({ validationResult: undefined })}\r\n />\r\n )\r\n case 'date':\r\n return <MenuWithTypeDate name={fieldSelected.toString()} fieldConfig={fieldConfig} validationResult={this.state.validationResult} />\r\n case 'date-range':\r\n return <MenuWithTypeDateRange name={fieldSelected.toString()} fieldConfig={fieldConfig} validationResult={this.state.validationResult} />\r\n case 'string':\r\n default:\r\n return <MenuWithTypeString name={fieldSelected.toString()} fieldConfig={fieldConfig} validationResult={this.state.validationResult} />\r\n }\r\n }\r\n\r\n /**\r\n * Handle form submission\r\n * @param event - The form submit event\r\n * @param context - The filter bar context\r\n * @param fieldSelected - The selected field to filter\r\n */\r\n handleSubmit = (event: React.FormEvent<HTMLFormElement>, context: IDataViewContext<T>, fieldSelected: keyof IFilterConfigs<T>) => {\r\n event?.preventDefault()\r\n event?.stopPropagation()\r\n\r\n const formData = new FormData(event?.currentTarget as HTMLFormElement)\r\n\r\n // Validate form data\r\n const validation = this.formValidate(formData, fieldSelected, context)\r\n if (validation.hasError) {\r\n this.setState({ validationResult: validation })\r\n return\r\n }\r\n\r\n // If validation passes, add filter\r\n this.addFilter(formData, context, fieldSelected)\r\n }\r\n\r\n /**\r\n * Validate form data based on field type and configuration\r\n * @param formData - The form data to validate\r\n * @param fieldSelected - The selected field to validate\r\n * @param context - The filter bar context\r\n * @returns Validation result with error status and message\r\n */\r\n formValidate = (formData: FormData, fieldSelected: keyof IFilterConfigs<T>, context: IDataViewContext<T>): IValidationResult => {\r\n const obj = convertFormDataToJson<T>(formData)\r\n const fieldsValidation = getFieldsValidation<T>(context.filterBarConfigs.fields || {})\r\n const fieldConfig = fieldsValidation[fieldSelected]\r\n\r\n if (fieldConfig?.type === 'select-multi') {\r\n const values = formData.getAll(fieldSelected.toString())\r\n if (values.length === 0) {\r\n return { hasError: true, message: 'Please select at least one option' }\r\n }\r\n } else if (fieldConfig?.type === 'date-range') {\r\n const startDate = formData.get(`${fieldSelected.toString()}_start`)?.toString()\r\n const endDate = formData.get(`${fieldSelected.toString()}_end`)?.toString()\r\n\r\n if (!startDate || !endDate) {\r\n return { hasError: true, message: 'Please select both start and end dates' }\r\n }\r\n\r\n if (new Date(startDate) > new Date(endDate)) {\r\n return { hasError: true, message: 'Start date must be before end date' }\r\n }\r\n } else {\r\n const value = obj[fieldSelected as keyof T]?.toString()\r\n const validate = filterFieldValidated(value ?? '', fieldSelected, fieldConfig)\r\n if (validate.error) {\r\n return { hasError: true, message: validate.message }\r\n }\r\n }\r\n\r\n return { hasError: false }\r\n }\r\n\r\n /**\r\n * Add filter based on field type and form data\r\n * @param formData - The form data containing field values\r\n * @param context - The filter bar context\r\n * @param fieldSelected - The selected field to filter\r\n */\r\n addFilter = (formData: FormData, context: IDataViewContext<T>, fieldSelected: keyof IFilterConfigs<T>) => {\r\n const fieldsValidation = getFieldsValidation<T>(context.filterBarConfigs.fields || {})\r\n const fieldConfig = fieldsValidation[fieldSelected]\r\n const store = createFilterStore<T>(context?.filterState || {})\r\n const formDataJson = convertFormDataToJson<T>(formData)\r\n\r\n // Get logic values from form data\r\n const filterLogic = (formData.get('filterLogic')?.toString() as IFilterLogic) || 'and'\r\n const dateLogic = (formData.get('dateLogic')?.toString() as IFilterDateLogic) || 'equals'\r\n const dateRangeLogic = (formData.get('dateRangeLogic')?.toString() as IFilterDateRangeLogic) || 'between'\r\n\r\n // Handle date-range separately\r\n if (fieldConfig?.type === 'date-range') {\r\n const startDate = formData.get(`${fieldSelected.toString()}_start`)?.toString()\r\n const endDate = formData.get(`${fieldSelected.toString()}_end`)?.toString()\r\n\r\n if (startDate && endDate) {\r\n const filterItem: IFilterItem = {\r\n type: 'date-range',\r\n startDate,\r\n endDate,\r\n dateRangeLogic: dateRangeLogic,\r\n label: `${startDate} to ${endDate}`\r\n }\r\n\r\n store.addFilterItem(fieldSelected as keyof T, filterItem, { reason: 'field', area: 'filterButton' })\r\n }\r\n } else {\r\n // Get all values based on field type\r\n let values: string[] = []\r\n\r\n if (fieldConfig?.type === 'select-multi') {\r\n // For multi-select, obj[fieldSelected] should be an array\r\n const fieldValue = formDataJson[fieldSelected]\r\n if (Array.isArray(fieldValue)) {\r\n values = fieldValue.map((v) => v.toString())\r\n } else if (fieldValue) {\r\n values = [fieldValue.toString()]\r\n }\r\n } else {\r\n // For single select and string\r\n const value = formDataJson[fieldSelected as keyof T]?.toString()\r\n if (value) {\r\n values = [value]\r\n }\r\n }\r\n\r\n // Add all values to store\r\n values.forEach((value) => {\r\n let label: string | undefined = undefined\r\n\r\n if (fieldConfig?.type === 'select' || fieldConfig?.type === 'select-multi') {\r\n label = fieldConfig.options.find((x) => x.value === value)?.label\r\n }\r\n\r\n // Create filter item with type and logic\r\n const filterItem: IFilterItem = { type: fieldConfig?.type || 'string', value, label }\r\n if (fieldConfig?.type !== 'string') filterItem.type = fieldConfig?.type\r\n if (fieldConfig?.type === 'select-multi') filterItem.logic = filterLogic\r\n if (fieldConfig?.type === 'date') filterItem.dateLogic = dateLogic\r\n\r\n store.addFilterItem(fieldSelected as keyof T, filterItem, { reason: 'field', area: 'filterButton' })\r\n })\r\n }\r\n\r\n context.onFilterStateChange(store.build())\r\n }\r\n }\r\n\r\n return FilterMenu\r\n}\r\n\r\nexport default createFilterMenu\r\n\r\nconst MenuListCustom = styled(MenuList)({\r\n padding: 0,\r\n [`.${filterMenuClasses.item}`]: {\r\n height: 'var(--filter-item-height, 40px)',\r\n padding: '0 16px',\r\n '&:not(:last-child)': {\r\n borderBottom: '1px solid var(--color-divider, rgba(145 160 170 / 10%))'\r\n }\r\n }\r\n})\r\n\r\nconst ActionWrapper = styled(Box)({\r\n display: 'flex',\r\n alignItems: 'center',\r\n justifyContent: 'flex-end',\r\n padding: '8px'\r\n})\r\n"],"names":["createFilterMenu","FilterMenu","props","_this","_classCallCheck","_callSuper","_defineProperty","context","fieldSelected","_jsxs","onSubmit","e","handleSubmit","children","renderWithMode","ActionWrapper","_jsx","Button","size","color","onClick","onPanelClose","type","sx","fontWeight","_context$filterBarCon","fieldConfig","filterBarConfigs","fields","MenuWithTypeSelect","name","toString","validationResult","state","onChange","setState","undefined","MenuWithTypeSelectMulti","MenuWithTypeDate","MenuWithTypeDateRange","MenuWithTypeString","event","preventDefault","stopPropagation","formData","FormData","currentTarget","validation","formValidate","hasError","addFilter","obj","convertFormDataToJson","getFieldsValidation","getAll","length","message","_formData$get","_formData$get2","startDate","get","concat","endDate","Date","_obj$fieldSelected","value","validate","filterFieldValidated","error","_formData$get3","_formData$get4","_formData$get5","store","createFilterStore","filterState","formDataJson","filterLogic","dateLogic","dateRangeLogic","_formData$get6","_formData$get7","filterItem","label","addFilterItem","reason","area","values","fieldValue","Array","isArray","map","v","_formDataJson$fieldSe","forEach","_fieldConfig$options$","options","find","x","logic","onFilterStateChange","build","_inherits","Component","_createClass","key","_this2","this","mapDataViewContext","renderForm","fieldsValidation","keys","Object","MenuListCustom","className","filterMenuClasses","list","minWidth","i","_context$filterBarCon2","_item$label","item","MenuItem","Fragment","styled","MenuList","padding","height","borderBottom","Box","display","alignItems","justifyContent"],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ import{objectSpread2 as e,inherits as a,createClass as t,classCallCheck as r,callSuper as i,defineProperty as n}from"../_virtual/_rollupPluginBabelHelpers.js";import{jsx as o}from"react/jsx-runtime";import{Component as l}from"react";import{styled as s,TablePagination as p}from"@mui/material";import{createFilterStore as u}from"./filter-store.js";function g(){var e=function(){function e(){var a;r(this,e);for(var t=arguments.length,o=new Array(t),l=0;l<t;l++)o[l]=arguments[l];return a=i(this,e,[].concat(o)),n(a,"handleChangePage",(function(e,t){var r,i,n,o=u(null!==(r=a.props.filter)&&void 0!==r?r:{},a.defaultFilter),l={page:t,pageSize:a.pagination.pageSize};o.changePagination(l),null===(i=(n=a.props).onChange)||void 0===i||i.call(n,o.build())})),n(a,"handleChangeRowsPerPage",(function(e){var t,r,i,n=parseInt(e.target.value,10),o=u(null!==(t=a.props.filter)&&void 0!==t?t:{},a.defaultFilter);o.changePagination({page:0,pageSize:n}),null===(r=(i=a.props).onChange)||void 0===r||r.call(i,o.build())})),a}return a(e,l),t(e,[{key:"defaultFilter",get:function(){return this.props.defaultFilter||{}}},{key:"defaultPagination",get:function(){var e;return(null===(e=this.defaultFilter)||void 0===e?void 0:e.pagination)||{page:0,pageSize:10}}},{key:"pagination",get:function(){var e;return(null===(e=this.props.filter)||void 0===e?void 0:e.pagination)||this.defaultPagination}},{key:"rowsPerPageOptions",get:function(){return this.props.rowsPerPageOptions||[10,25,50,100]}},{key:"render",value:function(){var e=this.pagination,a=e.page,t=e.pageSize;return o(c,{size:"small",page:a,count:this.props.count||0,onPageChange:this.handleChangePage,rowsPerPage:t,onRowsPerPageChange:this.handleChangeRowsPerPage,rowsPerPageOptions:this.rowsPerPageOptions,labelRowsPerPage:"Items per page",slotProps:{actions:{nextButton:{size:"small"},previousButton:{size:"small"}},select:{MenuProps:{disableScrollLock:this.props.disableScrollLock}}}})}}])}();return e}var c=s((function(a){return o(p,e({component:"div"},a))}))({"@media (min-width: 600px)":{".MuiToolbar-root":{minHeight:"48px"}}});export{g as createPaginationBar,g as default};
2
+ //# sourceMappingURL=create.pagination-bar.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"create.pagination-bar.js","sources":["../../src/data-view/create.pagination-bar.tsx"],"sourcesContent":["import React, { Component, ComponentType } from 'react'\r\nimport { styled, TablePagination, TablePaginationProps } from '@mui/material'\r\nimport { createFilterStore } from './filter-store'\r\nimport { IFilterState, IPagination } from './types'\r\n\r\nexport interface IPaginationBarConfigs {\r\n rowsPerPageOptions?: number[]\r\n disableScrollLock?: boolean\r\n}\r\n\r\nexport interface IPaginationBarProps<T> extends IPaginationBarConfigs {\r\n count?: number\r\n filter?: IFilterState<T>\r\n defaultFilter?: IFilterState<T>\r\n onChange?: (value: IFilterState<T>) => void\r\n}\r\n\r\nexport type IPaginationBarParams<T> = Pick<IPaginationBarProps<T>, 'defaultFilter' | 'rowsPerPageOptions'>\r\n\r\nexport function createPaginationBar<T>(): ComponentType<IPaginationBarProps<T>> {\r\n class PaginationBar extends Component<IPaginationBarProps<T>> {\r\n get defaultFilter(): IFilterState<T> {\r\n return this.props.defaultFilter || {}\r\n }\r\n\r\n get defaultPagination(): Required<IPagination> {\r\n return (this.defaultFilter?.pagination as any) || { page: 0, pageSize: 10 }\r\n }\r\n\r\n get pagination(): Required<IPagination> {\r\n return (this.props.filter?.pagination as any) || this.defaultPagination\r\n }\r\n\r\n get rowsPerPageOptions(): number[] {\r\n return this.props.rowsPerPageOptions || [10, 25, 50, 100]\r\n }\r\n\r\n handleChangePage = (_: React.MouseEvent<HTMLButtonElement> | null, newPage: number) => {\r\n const store = createFilterStore<T>(this.props.filter ?? {}, this.defaultFilter)\r\n const { pageSize } = this.pagination\r\n const obj: IPagination = { page: newPage, pageSize }\r\n store.changePagination(obj)\r\n this.props.onChange?.(store.build())\r\n }\r\n\r\n handleChangeRowsPerPage = (event: React.ChangeEvent<HTMLInputElement | HTMLTextAreaElement>) => {\r\n const newPageSize = parseInt(event.target.value, 10)\r\n const store = createFilterStore<T>(this.props.filter ?? {}, this.defaultFilter)\r\n store.changePagination({ page: 0, pageSize: newPageSize })\r\n this.props.onChange?.(store.build())\r\n }\r\n\r\n render() {\r\n const { page, pageSize } = this.pagination\r\n return (\r\n <TablePaginationCustom\r\n size='small'\r\n page={page}\r\n count={this.props.count || 0}\r\n onPageChange={this.handleChangePage}\r\n rowsPerPage={pageSize}\r\n onRowsPerPageChange={this.handleChangeRowsPerPage}\r\n rowsPerPageOptions={this.rowsPerPageOptions}\r\n labelRowsPerPage='Items per page'\r\n slotProps={{\r\n actions: { nextButton: { size: 'small' }, previousButton: { size: 'small' } },\r\n select: { MenuProps: { disableScrollLock: this.props.disableScrollLock } }\r\n }}\r\n />\r\n )\r\n }\r\n }\r\n return PaginationBar\r\n}\r\nexport default createPaginationBar\r\n\r\nconst TablePaginationCustom = styled((p: TablePaginationProps) => <TablePagination component='div' {...p} />)({\r\n '@media (min-width: 600px)': {\r\n '.MuiToolbar-root': {\r\n minHeight: '48px'\r\n }\r\n }\r\n})\r\n"],"names":["createPaginationBar","PaginationBar","_this","_classCallCheck","_len","arguments","length","args","Array","_key","_callSuper","this","concat","_defineProperty","_","newPage","_this$props$filter","_this$props$onChange","_this$props","store","createFilterStore","props","filter","defaultFilter","obj","page","pageSize","pagination","changePagination","onChange","call","build","event","_this$props$filter2","_this$props$onChange2","_this$props2","newPageSize","parseInt","target","value","_inherits","Component","_createClass","key","get","_this$defaultFilter","_this$props$filter3","defaultPagination","rowsPerPageOptions","_this$pagination","_jsx","TablePaginationCustom","size","count","onPageChange","handleChangePage","rowsPerPage","onRowsPerPageChange","handleChangeRowsPerPage","labelRowsPerPage","slotProps","actions","nextButton","previousButton","select","MenuProps","disableScrollLock","styled","p","TablePagination","_objectSpread","component","minHeight"],"mappings":"oWAmBgBA,IAAmB,IAC3BC,aAAc,SAAAA,IAAA,IAAAC,EAAAC,OAAAF,GAAA,IAAA,IAAAG,EAAAC,UAAAC,OAAAC,EAAAC,IAAAA,MAAAJ,GAAAK,EAAA,EAAAA,EAAAL,EAAAK,IAAAF,EAAAE,GAAAJ,UAAAI,GA8BjB,OA9BiBP,EAAAQ,EAAAC,KAAAV,EAAAW,GAAAA,OAAAL,IAAAM,EAAAX,EAAA,oBAiBC,SAACY,EAA+CC,GAAmB,IAAAC,EAAAC,EAAAC,EAC9EC,EAAQC,UAAiBJ,EAAId,EAAKmB,MAAMC,cAAM,IAAAN,EAAAA,EAAI,CAAA,EAAId,EAAKqB,eAE3DC,EAAmB,CAAEC,KAAMV,EAASW,SADrBxB,EAAKyB,WAAlBD,UAERP,EAAMS,iBAAiBJ,GACJP,QAAnBA,GAAAC,EAAAhB,EAAKmB,OAAMQ,oBAAQZ,GAAnBA,EAAAa,KAAAZ,EAAsBC,EAAMY,YAC7BlB,EAAAX,EAEyB,2BAAA,SAAC8B,GAAoE,IAAAC,EAAAC,EAAAC,EACvFC,EAAcC,SAASL,EAAMM,OAAOC,MAAO,IAC3CpB,EAAQC,UAAiBa,EAAI/B,EAAKmB,MAAMC,cAAM,IAAAW,EAAAA,EAAI,CAAA,EAAI/B,EAAKqB,eACjEJ,EAAMS,iBAAiB,CAAEH,KAAM,EAAGC,SAAUU,IACzBF,QAAnBA,GAAAC,EAAAjC,EAAKmB,OAAMQ,oBAAQK,GAAnBA,EAAAJ,KAAAK,EAAsBhB,EAAMY,YAC7B7B,CAAA,CAAA,OAAAsC,EAAAvC,EA9ByBwC,GA8BzBC,EAAAzC,EAAA,CAAA,CAAA0C,IAAA,gBAAAC,IA7BD,WACE,OAAOjC,KAAKU,MAAME,eAAiB,CAAE,CACvC,GAAC,CAAAoB,IAAA,oBAAAC,IAED,WAAqB,IAAAC,EACnB,OAA0BA,QAAlBA,EAAAlC,KAAKY,qBAALsB,IAAkBA,OAAlBA,EAAAA,EAAoBlB,aAAsB,CAAEF,KAAM,EAAGC,SAAU,GACzE,GAAC,CAAAiB,IAAA,aAAAC,IAED,WAAc,IAAAE,EACZ,OAAyB,QAAjBA,EAAAnC,KAAKU,MAAMC,cAAM,IAAAwB,OAAA,EAAjBA,EAAmBnB,aAAsBhB,KAAKoC,iBACxD,GAAC,CAAAJ,IAAA,qBAAAC,IAED,WACE,OAAOjC,KAAKU,MAAM2B,oBAAsB,CAAC,GAAI,GAAI,GAAI,IACvD,GAAC,CAAAL,IAAA,SAAAJ,MAiBD,WACE,IAAAU,EAA2BtC,KAAKgB,WAAxBF,EAAIwB,EAAJxB,KAAMC,EAAQuB,EAARvB,SACd,OACEwB,EAACC,EAAqB,CACpBC,KAAK,QACL3B,KAAMA,EACN4B,MAAO1C,KAAKU,MAAMgC,OAAS,EAC3BC,aAAc3C,KAAK4C,iBACnBC,YAAa9B,EACb+B,oBAAqB9C,KAAK+C,wBAC1BV,mBAAoBrC,KAAKqC,mBACzBW,iBAAiB,iBACjBC,UAAW,CACTC,QAAS,CAAEC,WAAY,CAAEV,KAAM,SAAWW,eAAgB,CAAEX,KAAM,UAClEY,OAAQ,CAAEC,UAAW,CAAEC,kBAAmBvD,KAAKU,MAAM6C,sBAI7D,IAAC,IAEH,OAAOjE,CACT,CAGA,IAAMkD,EAAwBgB,GAAO,SAACC,GAAuB,OAAKlB,EAACmB,EAAeC,EAAA,CAACC,UAAU,OAAUH,GAAK,GAA9ED,CAAgF,CAC5G,4BAA6B,CAC3B,mBAAoB,CAClBK,UAAW"}
@@ -0,0 +1,2 @@
1
+ import{inherits as r,createClass as t,classCallCheck as e,callSuper as n,defineProperty as a,objectSpread2 as o}from"../_virtual/_rollupPluginBabelHelpers.js";import{jsx as i}from"react/jsx-runtime";import{Component as s}from"react";import{styled as u,Box as c,Popper as l,Fade as p}from"@mui/material";import{PanelNotFound as m}from"./ui.units.js";import{mapDataViewContext as f}from"./context.js";import d from"./create.sort-menu.js";import h from"./create.filter-menu.js";import x from"./create.search-match.js";function v(){var u=x(),c=h(),v=d(),j=function(){function d(){var r;e(this,d);for(var t=arguments.length,o=new Array(t),s=0;s<t;s++)o[s]=arguments[s];return r=n(this,d,[].concat(o)),a(r,"renderPanelContent",(function(r){switch(r.area){case"input":return i(u,{});case"filterButton":return i(c,{});case"sortButton":return i(v,{});default:return i(m,{area:r.area})}})),r}return r(d,s),t(d,[{key:"render",value:function(){var r=this;return f((function(t){var e=t.keyword,n=t.anchorEl,a=t.area,s=Boolean(n)&&(!!e||"input"!==a);return i(l,{anchorEl:n,open:s,placement:"bottom-start",transition:!0,sx:{zIndex:1350},children:function(e){var n=e.TransitionProps;return i(p,o(o({},n),{},{timeout:0,children:i(b,{children:r.renderPanelContent(t)})}))}})}))}}])}();return j}var b=u(c)({borderRadius:"4px",boxShadow:"rgba(0, 0, 0, 0.06) 0px 5px 22px, rgba(0, 0, 0, 0.04) 0px 0px 0px 0.5px",backgroundColor:"#fff"});export{v as createPopperPanel,v as default};
2
+ //# sourceMappingURL=create.popper-panel.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"create.popper-panel.js","sources":["../../src/data-view/create.popper-panel.tsx"],"sourcesContent":["import React, { Component } from 'react'\r\nimport { Box, Fade, Popper, styled } from '@mui/material'\r\nimport { PanelNotFound } from './ui.units'\r\nimport { IDataViewContext, mapDataViewContext } from './context'\r\nimport createSortMenu from './create.sort-menu'\r\nimport createFilterMenu from './create.filter-menu'\r\nimport createSearchMatch from './create.search-match'\r\n\r\nexport function createPopperPanel<T>() {\r\n const SearchMatchInstance = createSearchMatch<T>()\r\n const FilterMenuInstance = createFilterMenu<T>()\r\n const SortMenuInstance = createSortMenu<T>()\r\n\r\n class Panel extends Component {\r\n render() {\r\n return mapDataViewContext((context) => {\r\n const { keyword, anchorEl, area } = context\r\n const isOpen = Boolean(anchorEl) && (!!keyword || area !== 'input')\r\n return (\r\n <Popper anchorEl={anchorEl} open={isOpen} placement='bottom-start' transition sx={{ zIndex: 1350 }}>\r\n {({ TransitionProps }) => (\r\n <Fade {...TransitionProps} timeout={0}>\r\n <PannelWrap>{this.renderPanelContent(context)}</PannelWrap>\r\n </Fade>\r\n )}\r\n </Popper>\r\n )\r\n })\r\n }\r\n\r\n renderPanelContent = (context: IDataViewContext<T>) => {\r\n switch (context.area) {\r\n case 'input':\r\n return <SearchMatchInstance />\r\n case 'filterButton':\r\n return <FilterMenuInstance />\r\n case 'sortButton':\r\n return <SortMenuInstance />\r\n default:\r\n return <PanelNotFound area={context.area} />\r\n }\r\n }\r\n }\r\n return Panel\r\n}\r\nexport default createPopperPanel\r\n\r\nconst PannelWrap = styled(Box)({\r\n borderRadius: '4px',\r\n boxShadow: 'rgba(0, 0, 0, 0.06) 0px 5px 22px, rgba(0, 0, 0, 0.04) 0px 0px 0px 0.5px',\r\n backgroundColor: '#fff'\r\n})\r\n"],"names":["createPopperPanel","SearchMatchInstance","createSearchMatch","FilterMenuInstance","createFilterMenu","SortMenuInstance","createSortMenu","Panel","_this","_classCallCheck","_len","arguments","length","args","Array","_key","_callSuper","this","concat","_defineProperty","context","area","_jsx","PanelNotFound","_inherits","Component","_createClass","key","value","_this2","mapDataViewContext","keyword","anchorEl","isOpen","Boolean","Popper","open","placement","transition","sx","zIndex","children","_ref","TransitionProps","Fade","_objectSpread","timeout","PannelWrap","renderPanelContent","styled","Box","borderRadius","boxShadow","backgroundColor"],"mappings":"4gBAQgBA,IACd,IAAMC,EAAsBC,IACtBC,EAAqBC,IACrBC,EAAmBC,IAEnBC,aAAM,SAAAA,IAAA,IAAAC,EAAAC,OAAAF,GAAA,IAAA,IAAAG,EAAAC,UAAAC,OAAAC,EAAAC,IAAAA,MAAAJ,GAAAK,EAAA,EAAAA,EAAAL,EAAAK,IAAAF,EAAAE,GAAAJ,UAAAI,GA4BT,OA5BSP,EAAAQ,EAAAC,KAAAV,EAAAW,GAAAA,OAAAL,IAAAM,EAAAX,EAiBW,sBAAA,SAACY,GACpB,OAAQA,EAAQC,MACd,IAAK,QACH,OAAOC,EAACrB,EAAmB,IAC7B,IAAK,eACH,OAAOqB,EAACnB,EAAkB,IAC5B,IAAK,aACH,OAAOmB,EAACjB,EAAgB,IAC1B,QACE,OAAOiB,EAACC,EAAc,CAAAF,KAAMD,EAAQC,WAEzCb,CAAA,CAAA,OAAAgB,EAAAjB,EA5BiBkB,GA4BjBC,EAAAnB,EAAA,CAAA,CAAAoB,IAAA,SAAAC,MA3BD,WAAM,IAAAC,EAAAZ,KACJ,OAAOa,GAAmB,SAACV,GACzB,IAAQW,EAA4BX,EAA5BW,QAASC,EAAmBZ,EAAnBY,SAAUX,EAASD,EAATC,KACrBY,EAASC,QAAQF,OAAgBD,GAAoB,UAATV,GAClD,OACEC,EAACa,EAAO,CAAAH,SAAUA,EAAUI,KAAMH,EAAQI,UAAU,eAAeC,YAAU,EAACC,GAAI,CAAEC,OAAQ,MAAMC,SAC/F,SAD+FC,GAAA,IAC5FC,EAAeD,EAAfC,gBAAe,OACjBrB,EAACsB,EAAIC,EAAAA,KAAKF,GAAe,GAAA,CAAEG,QAAS,EAACL,SACnCnB,EAACyB,EAAY,CAAAN,SAAAZ,EAAKmB,mBAAmB5B,OAChC,GAIf,GACF,IAAC,IAeH,OAAOb,CACT,CAGA,IAAMwC,EAAaE,EAAOC,EAAPD,CAAY,CAC7BE,aAAc,MACdC,UAAW,0EACXC,gBAAiB"}
@@ -0,0 +1,2 @@
1
+ import{defineProperty as e,inherits as r,createClass as i,classCallCheck as t,callSuper as n,objectSpread2 as a}from"../_virtual/_rollupPluginBabelHelpers.js";import{jsxs as l,jsx as o}from"react/jsx-runtime";import{Component as c}from"react";import{styled as u,MenuList as s,MenuItem as d,Typography as h}from"@mui/material";import{FilterNotes as f}from"./ui.units.js";import{createFilterStore as m}from"./filter-store.js";import{filterMenuClasses as p,getFieldsMatches as v}from"./helpers.js";import{mapDataViewContext as k}from"./context.js";function S(){var u=function(){function u(){var r;t(this,u);for(var i=arguments.length,c=new Array(i),s=0;s<i;s++)c[s]=arguments[s];return r=n(this,u,[].concat(c)),e(r,"render",(function(){return k((function(e){var i,t=e.keyword,n=e.filterBarConfigs,c=n.fields,u=n.quickSearch,s=v(c,t),m=Object.keys(s).filter((function(e){return!!e})),k=null!==(i=null==u?void 0:u.label)&&void 0!==i?i:"Quick search";return l(b,{className:p.list,children:[m.map((function(i,n){var c,u,m=s[i],v=null!==(c=null==m?void 0:m.label)&&void 0!==c?c:i.toString(),k=null==m||null===(u=m.quickSearchMatch)||void 0===u?void 0:u.notes;return l(d,{className:p.item,onClick:function(){return r.handleClick(e,i)},children:[l(h,{variant:"body2",component:"span",sx:{flex:1},children:[v,' "',t,'"']}),k&&o(f,a({title:"The ".concat(v," includes"),disabledSize:!0},k))]},i.toString()+n)})),u&&l(d,{className:p.item,onClick:function(){return r.handleQuickSearchClick(e)},children:[l(h,{variant:"body2",component:"span",sx:{flex:1},children:[null!=k?k:"Quick search",' "',t,'"']}),u.notes&&o(f,a({title:"The ".concat(k.toLocaleLowerCase()," includes"),disabledSize:!0},u.notes))]})]})}))})),e(r,"handleClick",(function(e,r){var i,t=m(e.filterState);t.addFilterItem(r,{value:e.keyword},{reason:"quickSearch",area:"input"}),null===(i=e.onFilterStateChange)||void 0===i||i.call(e,t.build())})),e(r,"handleQuickSearchClick",(function(e){var r,i=m(e.filterState);i.addQuickSearch(e.keyword,{reason:"quickSearch",area:"input"}),null===(r=e.onFilterStateChange)||void 0===r||r.call(e,i.build())})),r}return r(u,c),i(u)}();return u}var b=u(s)(e({padding:0},".".concat(p.item),{height:"var(--filter-item-height, 40px)",padding:"8px 16px","&:not(:last-child)":{borderBottom:"1px solid var(--color-divider, rgba(145 160 170 / 10%))"}}));export{S as default};
2
+ //# sourceMappingURL=create.search-match.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"create.search-match.js","sources":["../../src/data-view/create.search-match.tsx"],"sourcesContent":["import React, { Component, ComponentType } from 'react'\r\nimport { MenuList, MenuItem, Typography, styled } from '@mui/material'\r\nimport { IFilterConfigs } from './types'\r\nimport { FilterNotes } from './ui.units'\r\nimport { createFilterStore } from './filter-store'\r\nimport { filterMenuClasses, getFieldsMatches } from './helpers'\r\nimport { IDataViewContext, mapDataViewContext } from './context'\r\n\r\nexport interface ISearchMatchProps {}\r\n\r\nfunction createSearchMatch<T>(): ComponentType<ISearchMatchProps> {\r\n class SearchMatch extends Component<ISearchMatchProps> {\r\n render = () => {\r\n return mapDataViewContext<T>((context) => {\r\n const { keyword } = context\r\n const { fields, quickSearch } = context.filterBarConfigs\r\n const fieldMatches = getFieldsMatches<T>(fields, keyword)\r\n const keys = Object.keys(fieldMatches).filter((x) => !!x) as (keyof IFilterConfigs<T>)[]\r\n const quickSearchLabel = quickSearch?.label ?? 'Quick search'\r\n\r\n return (\r\n <MenuListCustom className={filterMenuClasses.list}>\r\n {keys.map((key, i) => {\r\n const item = fieldMatches[key]\r\n const label = item?.label ?? key.toString()\r\n const notes = item?.quickSearchMatch?.notes\r\n return (\r\n <MenuItem key={key.toString() + i} className={filterMenuClasses.item} onClick={() => this.handleClick(context, key)}>\r\n <Typography variant='body2' component='span' sx={{ flex: 1 }}>\r\n {label} \"{keyword}\"\r\n </Typography>\r\n {notes && <FilterNotes title={`The ${label} includes`} disabledSize {...notes} />}\r\n </MenuItem>\r\n )\r\n })}\r\n {quickSearch && (\r\n <MenuItem className={filterMenuClasses.item} onClick={() => this.handleQuickSearchClick(context)}>\r\n <Typography variant='body2' component='span' sx={{ flex: 1 }}>\r\n {quickSearchLabel ?? 'Quick search'} &quot;{keyword}&quot;\r\n </Typography>\r\n {quickSearch.notes && (\r\n <FilterNotes title={`The ${quickSearchLabel.toLocaleLowerCase()} includes`} disabledSize {...quickSearch.notes} />\r\n )}\r\n </MenuItem>\r\n )}\r\n </MenuListCustom>\r\n )\r\n })\r\n }\r\n\r\n handleClick = (context: IDataViewContext<T>, field: keyof T) => {\r\n const store = createFilterStore(context.filterState)\r\n store.addFilterItem(field, { value: context.keyword }, { reason: 'quickSearch', area: 'input' })\r\n context.onFilterStateChange?.(store.build())\r\n }\r\n\r\n handleQuickSearchClick = (context: IDataViewContext<T>) => {\r\n const store = createFilterStore(context.filterState)\r\n store.addQuickSearch(context.keyword, { reason: 'quickSearch', area: 'input' })\r\n context.onFilterStateChange?.(store.build())\r\n }\r\n }\r\n return SearchMatch\r\n}\r\nexport default createSearchMatch\r\n\r\nconst MenuListCustom = styled(MenuList)({\r\n padding: 0,\r\n [`.${filterMenuClasses.item}`]: {\r\n height: 'var(--filter-item-height, 40px)',\r\n padding: '8px 16px',\r\n '&:not(:last-child)': {\r\n borderBottom: '1px solid var(--color-divider, rgba(145 160 170 / 10%))'\r\n }\r\n }\r\n})\r\n"],"names":["createSearchMatch","SearchMatch","_this","_classCallCheck","_len","arguments","length","args","Array","_key","_callSuper","this","concat","_defineProperty","mapDataViewContext","context","_quickSearch$label","keyword","_context$filterBarCon","filterBarConfigs","fields","quickSearch","fieldMatches","getFieldsMatches","keys","Object","filter","x","quickSearchLabel","label","_jsxs","MenuListCustom","className","filterMenuClasses","list","map","key","i","_item$label","_item$quickSearchMatc","item","toString","notes","quickSearchMatch","MenuItem","onClick","handleClick","Typography","variant","component","sx","flex","_jsx","FilterNotes","_objectSpread","title","disabledSize","handleQuickSearchClick","children","toLocaleLowerCase","field","_context$onFilterStat","store","createFilterStore","filterState","addFilterItem","value","reason","area","onFilterStateChange","call","build","_context$onFilterStat2","addQuickSearch","_inherits","Component","_createClass","styled","MenuList","padding","height","borderBottom"],"mappings":"iiBAUA,SAASA,IAAiB,IAClBC,aAAY,SAAAA,IAAA,IAAAC,EAAAC,OAAAF,GAAA,IAAA,IAAAG,EAAAC,UAAAC,OAAAC,EAAAC,IAAAA,MAAAJ,GAAAK,EAAA,EAAAA,EAAAL,EAAAK,IAAAF,EAAAE,GAAAJ,UAAAI,GAiDf,OAjDeP,EAAAQ,EAAAC,KAAAV,EAAAW,GAAAA,OAAAL,IAAAM,EAAAX,EAAA,UACP,WACP,OAAOY,GAAsB,SAACC,GAAW,IAAAC,EAC/BC,EAAYF,EAAZE,QACRC,EAAgCH,EAAQI,iBAAhCC,EAAMF,EAANE,OAAQC,EAAWH,EAAXG,YACVC,EAAeC,EAAoBH,EAAQH,GAC3CO,EAAOC,OAAOD,KAAKF,GAAcI,QAAO,SAACC,GAAC,QAAOA,KACjDC,EAAqCZ,QAArBA,EAAGK,aAAW,EAAXA,EAAaQ,aAAKb,IAAAA,EAAAA,EAAI,eAE/C,OACEc,EAACC,GAAeC,UAAWC,EAAkBC,eAC1CV,EAAKW,KAAI,SAACC,EAAKC,GAAK,IAAAC,EAAAC,EACbC,EAAOlB,EAAac,GACpBP,EAAmBS,QAAdA,EAAGE,eAAAA,EAAMX,iBAAKS,EAAAA,EAAIF,EAAIK,WAC3BC,EAAQF,SAAsBD,QAAlBA,EAAJC,EAAMG,wBAANJ,IAAsBA,OAAtBA,EAAAA,EAAwBG,MACtC,OACEZ,EAACc,EAAQ,CAA0BZ,UAAWC,EAAkBO,KAAMK,QAAS,WAAF,OAAQ3C,EAAK4C,YAAY/B,EAASqB,EAAI,YACjHN,EAACiB,EAAW,CAAAC,QAAQ,QAAQC,UAAU,OAAOC,GAAI,CAAEC,KAAM,aACtDtB,EAAK,KAAIZ,EAAO,OAElByB,GAASU,EAACC,EAAWC,EAAA,CAACC,MAAK3C,OAAAA,OAASiB,EAAgB,aAAE2B,cAAY,GAAKd,MAJ3DN,EAAIK,WAAaJ,EAOpC,IACChB,GACCS,EAACc,EAAQ,CAACZ,UAAWC,EAAkBO,KAAMK,QAAS,WAAF,OAAQ3C,EAAKuD,uBAAuB1C,EAAQ,EAAA2C,SAAA,CAC9F5B,EAACiB,EAAU,CAACC,QAAQ,QAAQC,UAAU,OAAOC,GAAI,CAAEC,KAAM,GAAGO,SAAA,CACzD9B,QAAAA,EAAoB,eAAuB,KAAAX,EACjC,OACZI,EAAYqB,OACXU,EAACC,EAAWC,EAAA,CAACC,MAAK,OAAA3C,OAASgB,EAAiB+B,oBAA8B,aAAEH,cAAY,GAAKnC,EAAYqB,aAMrH,OACD7B,EAAAX,EAAA,eAEa,SAACa,EAA8B6C,GAAkB,IAAAC,EACvDC,EAAQC,EAAkBhD,EAAQiD,aACxCF,EAAMG,cAAcL,EAAO,CAAEM,MAAOnD,EAAQE,SAAW,CAAEkD,OAAQ,cAAeC,KAAM,UAC3D,QAA3BP,EAAA9C,EAAQsD,2BAARR,IAA2BA,GAA3BA,EAAAS,KAAAvD,EAA8B+C,EAAMS,YACrC1D,EAAAX,EAEwB,0BAAA,SAACa,GAAgC,IAAAyD,EAClDV,EAAQC,EAAkBhD,EAAQiD,aACxCF,EAAMW,eAAe1D,EAAQE,QAAS,CAAEkD,OAAQ,cAAeC,KAAM,UAC1C,QAA3BI,EAAAzD,EAAQsD,2BAARG,IAA2BA,GAA3BA,EAAAF,KAAAvD,EAA8B+C,EAAMS,YACrCrE,CAAA,CAAA,OAAAwE,EAAAzE,EAjDuB0E,GAiDvBC,EAAA3E,EAAA,IAEH,OAAOA,CACT,CAGA,IAAM8B,EAAiB8C,EAAOC,EAAPD,CAAgBhE,EAAA,CACrCkE,QAAS,GAAC,IAAAnE,OACLqB,EAAkBO,MAAS,CAC9BwC,OAAQ,kCACRD,QAAS,WACT,qBAAsB,CACpBE,aAAc"}
@@ -0,0 +1,2 @@
1
+ import{defineProperty as t,inherits as e,createClass as r,classCallCheck as a,callSuper as o}from"../_virtual/_rollupPluginBabelHelpers.js";import{jsxs as n,jsx as i}from"react/jsx-runtime";import{Component as l}from"react";import{styled as c,Box as d,colors as s,Typography as u,List as f,ListItem as m,ListItemButton as h,ListItemText as g,IconButton as p}from"@mui/material";import{createFilterStore as x}from"./filter-store.js";import{ClearAllButton as C,mapSortConfigs as v}from"./ui.units.js";import{mapDataViewContext as S,defaultDataViewContext as b}from"./context.js";var w="SortMenu-root",y="SortMenu-header",k="SortMenu-list",V="SortMenu-item",B="SortMenu-activeItem",M="SortMenu-itemText",N="SortMenu-directionButton",j="SortMenu-clearButton";function P(){return function(){function c(e){var r;return a(this,c),r=o(this,c,[e]),t(r,"dataViewContext",b),t(r,"renderSortList",(function(){var t=r.dataViewContext.filterBarConfigs.fields||{},e=Object.keys(t).filter((function(e){var r=t[e];return!1!==(null==r?void 0:r.sortable)})),a=r.dataViewContext.filterState.sort;return 0===e.length?i(d,{sx:{p:2,textAlign:"center"},children:i(u,{variant:"body2",color:"text.secondary",children:"No sortable fields available"})}):i(f,{className:k,disablePadding:!0,children:e.map((function(e){var o=t[e],l=(null==a?void 0:a.field)===e,c=l?a.direction:void 0,d=v[c||"asc"];return i(m,{className:"".concat(V," ").concat(l?B:""),disablePadding:!0,children:n(h,{onClick:function(){return r.handleFieldClick(e,c)},sx:{backgroundColor:l?"rgba(25, 118, 210, 0.08)":"transparent","&:hover":{backgroundColor:l?"rgba(25, 118, 210, 0.12)":"rgba(0, 0, 0, 0.04)"}},children:[i(g,{primary:(null==o?void 0:o.label)||e.toString(),className:M,primaryTypographyProps:{className:M,sx:{fontWeight:l?600:400}}}),l&&i(p,{size:"small",className:N,onClick:function(t){t.stopPropagation(),r.handleDirectionToggle(e,c)},title:"Sort ".concat(d.title.toLocaleLowerCase()),children:d.icon})]})},e.toString())}))})})),t(r,"handleFieldClick",(function(t,e){var a={field:t,direction:e&&"asc"===e?"desc":"asc"},o=x(r.dataViewContext.filterState).changeSort(a,{area:"sortButton"});r.dataViewContext.onFilterStateChange(o.build())})),t(r,"handleDirectionToggle",(function(t,e){if(e){var a={field:t,direction:"asc"===e?"desc":"asc"},o=x(r.dataViewContext.filterState).changeSort(a,{area:"sortButton"});r.dataViewContext.onFilterStateChange(o.build())}})),t(r,"handleClearSort",(function(){var t=x(r.dataViewContext.filterState).removeSort({area:"sortButton"});r.dataViewContext.onFilterStateChange(t.build())})),r.dataViewContext=b,r}return e(c,l),r(c,[{key:"render",value:function(){var t=this;return S((function(e){return t.dataViewContext=e,n(F,{className:w,children:[n(d,{className:y,children:[i(u,{variant:"subtitle2",sx:{fontWeight:600},children:"Sort By"}),t.dataViewContext.filterState.sort&&i(C,{className:j,onClick:function(){return t.handleClearSort()},title:"Clear sort",children:"Clear"})]}),t.renderSortList()]})}))}}])}()}var F=c(d)(t(t(t(t(t({minWidth:"240px",maxWidth:"360px",backgroundColor:"#fff",borderRadius:"4px",overflow:"hidden"},".".concat(y),{display:"flex",alignItems:"center",background:s.grey[900],padding:"8px",gap:"8px",".MuiTypography-root":{color:s.common.white,flex:1}}),".".concat(k),{maxHeight:"300px",overflowY:"auto"}),".".concat(V),{"&:not(:last-child)":{borderBottom:"1px solid var(--color-divider, rgba(145 160 170 / 10%))"}}),".".concat(N),{marginLeft:"auto",color:"var(--color-primary, #1976d2)"}),".".concat(j),{color:"var(--color-error, #d32f2f)"}));export{P as default};
2
+ //# sourceMappingURL=create.sort-menu.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"create.sort-menu.js","sources":["../../src/data-view/create.sort-menu.tsx"],"sourcesContent":["import React, { Component, ComponentType } from 'react'\r\nimport { Box, List, ListItem, ListItemButton, ListItemText, Typography, IconButton, styled, colors } from '@mui/material'\r\nimport { ISort, IFilterConfigs } from './types'\r\nimport { createFilterStore } from './filter-store'\r\nimport { ClearAllButton, mapSortConfigs } from './ui.units'\r\nimport { defaultDataViewContext, IDataViewContext, mapDataViewContext } from './context'\r\n\r\nconst sortMenuClasses = {\r\n root: 'SortMenu-root',\r\n header: 'SortMenu-header',\r\n list: 'SortMenu-list',\r\n item: 'SortMenu-item',\r\n activeItem: 'SortMenu-activeItem',\r\n itemText: 'SortMenu-itemText',\r\n directionButton: 'SortMenu-directionButton',\r\n clearButton: 'SortMenu-clearButton'\r\n}\r\n\r\nexport interface ISortMenuProps {}\r\n\r\nfunction createSortMenu<T>(): ComponentType<any> {\r\n class SortMenu extends Component {\r\n dataViewContext: IDataViewContext<T> = defaultDataViewContext\r\n constructor(props: ISortMenuProps) {\r\n super(props)\r\n this.dataViewContext = defaultDataViewContext\r\n }\r\n\r\n render() {\r\n return mapDataViewContext((context) => {\r\n this.dataViewContext = context\r\n return (\r\n <Wrapper className={sortMenuClasses.root}>\r\n <Box className={sortMenuClasses.header}>\r\n <Typography variant='subtitle2' sx={{ fontWeight: 600 }}>\r\n Sort By\r\n </Typography>\r\n {this.dataViewContext.filterState.sort && (\r\n <ClearAllButton className={sortMenuClasses.clearButton} onClick={() => this.handleClearSort()} title='Clear sort'>\r\n Clear\r\n </ClearAllButton>\r\n )}\r\n </Box>\r\n {this.renderSortList()}\r\n </Wrapper>\r\n )\r\n })\r\n }\r\n\r\n renderSortList = () => {\r\n const fields: IFilterConfigs<T> = this.dataViewContext.filterBarConfigs.fields || {}\r\n const fieldKeys = Object.keys(fields) as Array<keyof T>\r\n\r\n // Filter only sortable fields (default is true if not specified)\r\n const sortableFields = fieldKeys.filter((fieldKey) => {\r\n const fieldConfig = fields[fieldKey]\r\n return fieldConfig?.sortable !== false // true by default\r\n })\r\n\r\n const currentSort = this.dataViewContext.filterState.sort\r\n\r\n if (sortableFields.length === 0) {\r\n return (\r\n <Box sx={{ p: 2, textAlign: 'center' }}>\r\n <Typography variant='body2' color='text.secondary'>\r\n No sortable fields available\r\n </Typography>\r\n </Box>\r\n )\r\n }\r\n\r\n return (\r\n <List className={sortMenuClasses.list} disablePadding>\r\n {sortableFields.map((fieldKey) => {\r\n const fieldConfig = fields[fieldKey]\r\n const isActive = currentSort?.field === fieldKey\r\n const currentDirection = isActive ? currentSort.direction : undefined\r\n const sortConfig = mapSortConfigs[currentDirection || 'asc']\r\n\r\n return (\r\n <ListItem key={fieldKey.toString()} className={`${sortMenuClasses.item} ${isActive ? sortMenuClasses.activeItem : ''}`} disablePadding>\r\n <ListItemButton\r\n onClick={() => this.handleFieldClick(fieldKey, currentDirection)}\r\n sx={{\r\n backgroundColor: isActive ? 'rgba(25, 118, 210, 0.08)' : 'transparent',\r\n '&:hover': {\r\n backgroundColor: isActive ? 'rgba(25, 118, 210, 0.12)' : 'rgba(0, 0, 0, 0.04)'\r\n }\r\n }}\r\n >\r\n <ListItemText\r\n primary={fieldConfig?.label || fieldKey.toString()}\r\n className={sortMenuClasses.itemText}\r\n primaryTypographyProps={{ className: sortMenuClasses.itemText, sx: { fontWeight: isActive ? 600 : 400 } }}\r\n />\r\n {isActive && (\r\n <IconButton\r\n size='small'\r\n className={sortMenuClasses.directionButton}\r\n onClick={(e) => {\r\n e.stopPropagation()\r\n this.handleDirectionToggle(fieldKey, currentDirection)\r\n }}\r\n title={`Sort ${sortConfig.title.toLocaleLowerCase()}`}\r\n >\r\n {sortConfig.icon}\r\n </IconButton>\r\n )}\r\n </ListItemButton>\r\n </ListItem>\r\n )\r\n })}\r\n </List>\r\n )\r\n }\r\n\r\n handleFieldClick = (field: keyof T, currentDirection?: 'asc' | 'desc') => {\r\n const newDirection: 'asc' | 'desc' = currentDirection ? (currentDirection === 'asc' ? 'desc' : 'asc') : 'asc'\r\n const newSort: ISort<T> = { field, direction: newDirection }\r\n\r\n const store = createFilterStore(this.dataViewContext.filterState).changeSort(newSort, { area: 'sortButton' })\r\n\r\n this.dataViewContext.onFilterStateChange(store.build())\r\n }\r\n\r\n handleDirectionToggle = (field: keyof T, currentDirection?: 'asc' | 'desc') => {\r\n if (!currentDirection) return\r\n\r\n const newDirection: 'asc' | 'desc' = currentDirection === 'asc' ? 'desc' : 'asc'\r\n const newSort: ISort<T> = { field, direction: newDirection }\r\n\r\n const store = createFilterStore(this.dataViewContext.filterState).changeSort(newSort, { area: 'sortButton' })\r\n\r\n this.dataViewContext.onFilterStateChange(store.build())\r\n }\r\n\r\n handleClearSort = () => {\r\n const store = createFilterStore(this.dataViewContext.filterState).removeSort({ area: 'sortButton' })\r\n\r\n this.dataViewContext.onFilterStateChange(store.build())\r\n }\r\n }\r\n\r\n return SortMenu\r\n}\r\n\r\nexport default createSortMenu\r\n\r\nconst Wrapper = styled(Box)({\r\n minWidth: '240px',\r\n maxWidth: '360px',\r\n backgroundColor: '#fff',\r\n borderRadius: '4px',\r\n overflow: 'hidden',\r\n\r\n [`.${sortMenuClasses.header}`]: {\r\n display: 'flex',\r\n alignItems: 'center',\r\n background: colors.grey[900],\r\n padding: '8px',\r\n gap: '8px',\r\n '.MuiTypography-root': {\r\n color: colors.common.white,\r\n flex: 1\r\n }\r\n },\r\n\r\n [`.${sortMenuClasses.list}`]: {\r\n maxHeight: '300px',\r\n overflowY: 'auto'\r\n },\r\n\r\n [`.${sortMenuClasses.item}`]: {\r\n '&:not(:last-child)': {\r\n borderBottom: '1px solid var(--color-divider, rgba(145 160 170 / 10%))'\r\n }\r\n },\r\n\r\n [`.${sortMenuClasses.directionButton}`]: {\r\n marginLeft: 'auto',\r\n color: 'var(--color-primary, #1976d2)'\r\n },\r\n\r\n [`.${sortMenuClasses.clearButton}`]: {\r\n color: 'var(--color-error, #d32f2f)'\r\n }\r\n})\r\n"],"names":["sortMenuClasses","createSortMenu","SortMenu","props","_this","_classCallCheck","_callSuper","_defineProperty","defaultDataViewContext","fields","dataViewContext","filterBarConfigs","sortableFields","Object","keys","filter","fieldKey","fieldConfig","sortable","currentSort","filterState","sort","length","_jsx","Box","sx","p","textAlign","children","Typography","variant","color","List","className","disablePadding","map","isActive","field","currentDirection","direction","undefined","sortConfig","mapSortConfigs","ListItem","concat","_jsxs","ListItemButton","onClick","handleFieldClick","backgroundColor","ListItemText","primary","label","toString","primaryTypographyProps","fontWeight","IconButton","size","e","stopPropagation","handleDirectionToggle","title","toLocaleLowerCase","icon","newSort","store","createFilterStore","changeSort","area","onFilterStateChange","build","removeSort","_inherits","Component","_createClass","key","value","_this2","this","mapDataViewContext","context","Wrapper","ClearAllButton","handleClearSort","renderSortList","styled","minWidth","maxWidth","borderRadius","overflow","display","alignItems","background","colors","grey","padding","gap","common","white","flex","maxHeight","overflowY","borderBottom","marginLeft"],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ import{slicedToArray as i,objectSpread2 as o}from"../_virtual/_rollupPluginBabelHelpers.js";import{jsx as t,jsxs as e,Fragment as n}from"react/jsx-runtime";import r,{useState as l,useMemo as a,useEffect as s}from"react";import{styled as d,Box as u,Typography as v}from"@mui/material";import{motion as c,AnimatePresence as m}from"framer-motion";import{createViewModeModule as p,createViewModeList as f}from"./view-mode.content.js";import{EViewMode as g}from"./view-mode.types.js";import{LoadingMissingConfig as h,defaultViewMode as w,LoadingError as b,LoadingWaiting as j,LoadingNoData as y,LoadingOverlay as x}from"./view-mode.units.js";var D={hidden:{opacity:0,y:5,scale:.985},visible:{opacity:1,y:0,scale:1},exit:{opacity:0,y:-5,scale:.985}},O={duration:.25,ease:"easeInOut"};function k(d){var u=(null==d?void 0:d.module)&&Object.keys(d.module).length>0,k=(null==d?void 0:d.list)&&Object.keys(d.list).length>0;if(!d||!u&&!k)return h;var S=p(),C=f(),E=function(r){var u=l(r.viewMode||d.defaultValue||w),p=i(u,2),f=p[0],h=p[1],k=a((function(){var i,o,t,e,n,l,a,s,u,v,c,m,p,f,g=Object.assign({},null===(i=d.list)||void 0===i?void 0:i.columns,null===(o=r.slots)||void 0===o||null===(o=o.list)||void 0===o?void 0:o.columns),h=Object.assign({},d.list,null===(t=r.slots)||void 0===t?void 0:t.list,{columns:g});return{NoData:null!==(e=null!==(n=null===(l=r.slots)||void 0===l?void 0:l.NoData)&&void 0!==n?n:d.NoData)&&void 0!==e?e:y,Skeleton:null!==(a=null!==(s=null===(u=r.slots)||void 0===u?void 0:u.Skeleton)&&void 0!==s?s:d.Skeleton)&&void 0!==a?a:j,ErrorData:null!==(v=null!==(c=null===(m=r.slots)||void 0===m?void 0:m.ErrorData)&&void 0!==c?c:d.ErrorData)&&void 0!==v?v:b,listConfigs:h,moduleConfigs:Object.assign({},d.module,null===(p=r.slots)||void 0===p?void 0:p.module),wrapProps:Object.assign({},d.wrapProps,null===(f=r.slots)||void 0===f?void 0:f.wrapProps)}}),[r.slots,d]);s((function(){r.viewMode&&h(r.viewMode)}),[r.viewMode]);var E,N,L,_=function(){switch(f){case g.List:return t(c.div,{variants:D,initial:"hidden",animate:"visible",exit:"exit",transition:O,children:t(C,{value:r.data,configs:k.listConfigs})},g.List);case g.Module:return t(c.div,{variants:D,initial:"hidden",animate:"visible",exit:"exit",transition:O,children:t(S,{data:r.data,configs:k.moduleConfigs})},g.Module);default:return t(c.div,{variants:D,initial:"hidden",animate:"visible",exit:"exit",transition:O,children:e(v,{variant:"subtitle1",children:["Unsupported view mode: ",f]})},"unsupported")}};return t(P,o(o({},k.wrapProps),{},{children:t(M,{layout:"position",transition:{duration:.4,ease:[.4,0,.2,1]},children:(E=k.NoData,N=k.ErrorData,L=k.Skeleton,r.loading&&0===r.data.length?t(L,{mode:f}):r.error?t(N,{error:r.error}):0!==r.data.length||r.loading?e(n,{children:[r.loading&&t(x,{}),t(m,{mode:"wait",children:_()})]}):t(E,{mode:f}))})}))};return r.memo(E)}var M=d(c.div,{shouldForwardProp:function(i){return"color"!==i&&"bgcolor"!==i&&"sx"!==i}})({position:"relative"}),P=d(u)((function(i){var o=i.theme;return{marginLeft:o.spacing(-2),marginRight:o.spacing(-2),padding:o.spacing(0,2,2)}}));export{k as createViewMode};
2
+ //# sourceMappingURL=create.view-mode.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"create.view-mode.js","sources":["../../src/data-view/create.view-mode.tsx"],"sourcesContent":["import React, { ComponentType, useState, useEffect, useMemo } from 'react'\r\nimport { Box, styled, Typography } from '@mui/material'\r\nimport { motion, AnimatePresence, Variants } from 'framer-motion'\r\nimport { createViewModeList, createViewModeModule } from './view-mode.content'\r\nimport { EViewMode, IViewModeConfigs, IViewModeValidModel } from './view-mode.types'\r\nimport { defaultViewMode, LoadingError, LoadingMissingConfig, LoadingNoData, LoadingOverlay, LoadingWaiting } from './view-mode.units'\r\n\r\ninterface IViewModeSlots<T extends IViewModeValidModel> extends IViewModeConfigs<T> {}\r\n\r\ninterface IViewModeProps<T extends IViewModeValidModel> {\r\n data: T[]\r\n viewMode?: EViewMode\r\n ready?: boolean\r\n loading?: boolean\r\n error?: string\r\n slots?: IViewModeSlots<T>\r\n}\r\n\r\nconst animationVariants: Variants = {\r\n hidden: { opacity: 0, y: 5, scale: 0.985 },\r\n visible: { opacity: 1, y: 0, scale: 1 },\r\n exit: { opacity: 0, y: -5, scale: 0.985 }\r\n}\r\n\r\nconst animationTransition = {\r\n duration: 0.25,\r\n ease: 'easeInOut'\r\n}\r\n\r\nexport function createViewMode<T extends IViewModeValidModel>(configs?: IViewModeConfigs<T>): ComponentType<IViewModeProps<T>> {\r\n const isModuleConfigs = configs?.module && Object.keys(configs.module).length > 0\r\n const isListConfigs = configs?.list && Object.keys(configs.list).length > 0\r\n if (!configs || (!isModuleConfigs && !isListConfigs)) return LoadingMissingConfig\r\n\r\n const MemoizedContentModeModule = createViewModeModule<T>()\r\n const MemoizedContentModeList = createViewModeList<T>()\r\n\r\n const ViewMode: React.FC<IViewModeProps<T>> = (props) => {\r\n const [currentMode, setCurrentMode] = useState<EViewMode>(props.viewMode || configs.defaultValue || defaultViewMode)\r\n\r\n // Merge configs from props and default\r\n const internalConfigs = useMemo(() => {\r\n const columns = Object.assign({}, configs.list?.columns, props.slots?.list?.columns)\r\n const listConfigs = Object.assign({}, configs.list, props.slots?.list, { columns })\r\n return {\r\n NoData: props.slots?.NoData ?? configs.NoData ?? LoadingNoData,\r\n Skeleton: props.slots?.Skeleton ?? configs.Skeleton ?? LoadingWaiting,\r\n ErrorData: props.slots?.ErrorData ?? configs.ErrorData ?? LoadingError,\r\n listConfigs,\r\n moduleConfigs: Object.assign({}, configs.module, props.slots?.module),\r\n wrapProps: Object.assign({}, configs.wrapProps, props.slots?.wrapProps)\r\n }\r\n }, [props.slots, configs])\r\n\r\n useEffect(() => {\r\n if (props.viewMode) {\r\n setCurrentMode(props.viewMode)\r\n }\r\n }, [props.viewMode])\r\n\r\n const renderContentByMode = () => {\r\n switch (currentMode) {\r\n case EViewMode.List:\r\n return (\r\n <motion.div\r\n key={EViewMode.List}\r\n variants={animationVariants}\r\n initial='hidden'\r\n animate='visible'\r\n exit='exit'\r\n transition={animationTransition}\r\n >\r\n <MemoizedContentModeList value={props.data} configs={internalConfigs.listConfigs} />\r\n </motion.div>\r\n )\r\n case EViewMode.Module:\r\n return (\r\n <motion.div\r\n key={EViewMode.Module}\r\n variants={animationVariants}\r\n initial='hidden'\r\n animate='visible'\r\n exit='exit'\r\n transition={animationTransition}\r\n >\r\n <MemoizedContentModeModule data={props.data} configs={internalConfigs.moduleConfigs} />\r\n </motion.div>\r\n )\r\n default:\r\n return (\r\n <motion.div\r\n key='unsupported'\r\n variants={animationVariants}\r\n initial='hidden'\r\n animate='visible'\r\n exit='exit'\r\n transition={animationTransition}\r\n >\r\n <Typography variant='subtitle1'>Unsupported view mode: {currentMode}</Typography>\r\n </motion.div>\r\n )\r\n }\r\n }\r\n\r\n const renderFinalContent = () => {\r\n const { NoData, ErrorData, Skeleton } = internalConfigs\r\n\r\n if (props.loading && props.data.length === 0) return <Skeleton mode={currentMode} />\r\n if (props.error) return <ErrorData error={props.error} />\r\n if (props.data.length === 0 && !props.loading) return <NoData mode={currentMode} />\r\n\r\n return (\r\n <>\r\n {props.loading && <LoadingOverlay />}\r\n <AnimatePresence mode='wait'>{renderContentByMode()}</AnimatePresence>\r\n </>\r\n )\r\n }\r\n\r\n return (\r\n <Wrap {...internalConfigs.wrapProps}>\r\n <ContentWrap layout='position' transition={{ duration: 0.4, ease: [0.4, 0, 0.2, 1] }}>\r\n {renderFinalContent()}\r\n </ContentWrap>\r\n </Wrap>\r\n )\r\n }\r\n\r\n return React.memo(ViewMode)\r\n}\r\n\r\nconst ContentWrap = styled(motion.div, {\r\n shouldForwardProp: (prop) => prop !== 'color' && prop !== 'bgcolor' && prop !== 'sx'\r\n})({\r\n position: 'relative'\r\n // overflow: 'hidden'\r\n})\r\n\r\nconst Wrap = styled(Box)(({ theme }) => ({\r\n marginLeft: theme.spacing(-2),\r\n marginRight: theme.spacing(-2),\r\n padding: theme.spacing(0, 2, 2)\r\n}))\r\n"],"names":["animationVariants","hidden","opacity","y","scale","visible","exit","animationTransition","duration","ease","createViewMode","configs","isModuleConfigs","module","Object","keys","length","isListConfigs","list","LoadingMissingConfig","MemoizedContentModeModule","createViewModeModule","MemoizedContentModeList","createViewModeList","ViewMode","props","_useState","useState","viewMode","defaultValue","defaultViewMode","_useState2","_slicedToArray","currentMode","setCurrentMode","internalConfigs","useMemo","_configs$list","_props$slots","_props$slots2","_ref","_props$slots$NoData","_props$slots3","_ref2","_props$slots$Skeleton","_props$slots4","_ref3","_props$slots$ErrorDat","_props$slots5","_props$slots6","_props$slots7","columns","assign","slots","listConfigs","NoData","LoadingNoData","Skeleton","LoadingWaiting","ErrorData","LoadingError","moduleConfigs","wrapProps","useEffect","renderContentByMode","EViewMode","List","_jsx","motion","div","variants","initial","animate","transition","children","value","data","Module","_jsxs","Typography","variant","Wrap","_objectSpread","ContentWrap","layout","loading","mode","error","LoadingOverlay","AnimatePresence","React","memo","styled","shouldForwardProp","prop","position","Box","_ref4","theme","marginLeft","spacing","marginRight","padding"],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ import{createClass as t,classCallCheck as r,defineProperty as e}from"../_virtual/_rollupPluginBabelHelpers.js";import o from"dayjs";import"../utils/dayjs-config.js";import"react/jsx-runtime";import"react";import"react-router-dom";import"../utils/query-param.js";import{createFilterStore as i}from"./filter-store.js";import{createViewMode as a}from"./create.view-mode.js";import{createKeyConverter as s}from"./key-converter.js";import{createViewModeButtons as m}from"./view-mode.units.js";import{createConvertFilterToGraphQL as n}from"./convert-filter-to-graphql.js";import{syncQueryToURL as c,getQueryFromURL as l,getSeedKeyFromURL as u,syncViewModeToURL as f,getViewModeFromURL as p,converFilterToQueryParam as h}from"./query-param-url.js";import{createPaginationBar as v}from"./create.pagination-bar.js";import d from"./create.data-view.js";var j=new(t((function t(){var j=this;r(this,t),e(this,"createDataView",d),e(this,"createKeyConverter",s),e(this,"createConvertFilterToGraphQL",n),e(this,"createFilterStore",i),e(this,"createPaginationBar",v),e(this,"createViewMode",a),e(this,"createViewModeButtons",m),e(this,"syncQueryToURL",c),e(this,"getQueryFromURL",l),e(this,"getSeedKeyFromURL",u),e(this,"syncViewModeToURL",f),e(this,"getViewModeFromURL",p),e(this,"converFilterToQueryParam",h),e(this,"formatterDate",(function(t,r){var e,i,a=null!==(e=null==r?void 0:r.formatString)&&void 0!==e?e:"MM/DD/YYYY HH:mm",s=null!==(i=null==r?void 0:r.showRelative)&&void 0!==i&&i;try{if(!t)return"";var m=o(t),n=m.format(a);return s?"".concat(n," (").concat(o().to(m),")"):n}catch(t){return""}})),e(this,"valueFormatterDate",(function(t){return function(r){return j.formatterDate(r.value,t)}}))})));export{j as DinoDataView,j as default};
2
+ //# sourceMappingURL=dino.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dino.js","sources":["../../src/data-view/dino.tsx"],"sourcesContent":["import { GridValueFormatterParams } from '@mui/x-data-grid'\r\nimport { dayjsCustom } from '../utils'\r\nimport { createFilterStore } from './filter-store'\r\nimport { createViewMode } from './create.view-mode'\r\nimport { createKeyConverter } from './key-converter'\r\nimport { createViewModeButtons } from './view-mode.units'\r\nimport { createConvertFilterToGraphQL } from './convert-filter-to-graphql'\r\nimport { getViewModeFromURL, syncViewModeToURL } from './query-param-url'\r\nimport { converFilterToQueryParam, getQueryFromURL, getSeedKeyFromURL, syncQueryToURL } from './query-param-url'\r\nimport createPaginationBar from './create.pagination-bar'\r\nimport createDataView from './create.data-view'\r\n\r\nconst formatDateString = 'MM/DD/YYYY HH:mm'\r\n\r\nexport interface IFormatterDateOptions {\r\n formatString?: string\r\n showRelative?: boolean\r\n}\r\n\r\nclass DinoDataViewBase {\r\n createDataView = createDataView\r\n\r\n createKeyConverter = createKeyConverter\r\n\r\n createConvertFilterToGraphQL = createConvertFilterToGraphQL\r\n\r\n createFilterStore = createFilterStore\r\n\r\n createPaginationBar = createPaginationBar\r\n\r\n createViewMode = createViewMode\r\n\r\n createViewModeButtons = createViewModeButtons\r\n\r\n syncQueryToURL = syncQueryToURL\r\n\r\n getQueryFromURL = getQueryFromURL\r\n\r\n getSeedKeyFromURL = getSeedKeyFromURL\r\n\r\n syncViewModeToURL = syncViewModeToURL\r\n\r\n getViewModeFromURL = getViewModeFromURL\r\n\r\n converFilterToQueryParam = converFilterToQueryParam\r\n\r\n //#region Value Formatter\r\n formatterDate = (value: any, options?: IFormatterDateOptions): string => {\r\n const f = options?.formatString ?? formatDateString\r\n const showRelative = options?.showRelative ?? false\r\n try {\r\n if (!value) return ''\r\n\r\n const date = dayjsCustom(value)\r\n const formatted = date.format(f)\r\n\r\n return showRelative ? `${formatted} (${dayjsCustom().to(date)})` : formatted\r\n } catch (error) {\r\n return ''\r\n }\r\n }\r\n\r\n valueFormatterDate = (options?: IFormatterDateOptions) => {\r\n return (params: GridValueFormatterParams<any>) => this.formatterDate(params.value, options)\r\n }\r\n //#endregion\r\n}\r\nexport const DinoDataView = new DinoDataViewBase()\r\nexport default DinoDataView\r\n"],"names":["DinoDataView","_createClass","DinoDataViewBase","_this","this","_classCallCheck","_defineProperty","createDataView","createKeyConverter","createConvertFilterToGraphQL","createFilterStore","createPaginationBar","createViewMode","createViewModeButtons","syncQueryToURL","getQueryFromURL","getSeedKeyFromURL","syncViewModeToURL","getViewModeFromURL","converFilterToQueryParam","value","options","_options$formatString","_options$showRelative","f","formatString","showRelative","date","dayjsCustom","formatted","format","concat","to","error","params","formatterDate"],"mappings":"20BAYA,IAuDaA,EAAe,IAhDNC,GAAA,SAAAC,IAAA,IAAAC,EAAAC,KAAAC,OAAAH,GAAAI,wBACHC,GAAcD,4BAEVE,GAAkBF,sCAERG,GAA4BH,2BAEvCI,GAAiBJ,6BAEfK,GAAmBL,wBAExBM,GAAcN,+BAEPO,GAAqBP,wBAE5BQ,GAAcR,yBAEbS,GAAeT,2BAEbU,GAAiBV,2BAEjBW,GAAiBX,4BAEhBY,GAAkBZ,kCAEZa,GAE3Bb,EACgBF,KAAA,iBAAA,SAACgB,EAAYC,GAA2C,IAAAC,EAAAC,EAChEC,EAAyBF,QAAxBA,EAAGD,aAAO,EAAPA,EAASI,oBAAYH,IAAAA,EAAAA,EApCV,mBAqCfI,EAAoCH,QAAxBA,EAAGF,aAAO,EAAPA,EAASK,oBAAYH,IAAAA,GAAAA,EAC1C,IACE,IAAKH,EAAO,MAAO,GAEnB,IAAMO,EAAOC,EAAYR,GACnBS,EAAYF,EAAKG,OAAON,GAE9B,OAAOE,EAAYK,GAAAA,OAAMF,QAASE,OAAKH,IAAcI,GAAGL,QAAWE,CACpE,CAAC,MAAOI,GACP,MAAO,EACR,KACF3B,EAAAF,KAAA,sBAEoB,SAACiB,GACpB,OAAO,SAACa,GAAqC,OAAK/B,EAAKgC,cAAcD,EAAOd,MAAOC,EAAQ,IAC5F"}
@@ -0,0 +1,2 @@
1
+ import{createClass as t,objectSpread2 as e,toConsumableArray as i,defineProperty as a,objectWithoutProperties as s,toPropertyKey as r,classCallCheck as n}from"../_virtual/_rollupPluginBabelHelpers.js";import"dayjs";import"../utils/dayjs-config.js";import"react/jsx-runtime";import"react";import"react-router-dom";import{QueryParam as o}from"../utils/query-param.js";var h=function(){return t((function t(){var i=this,s=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},r=arguments.length>1?arguments[1]:void 0;n(this,t),a(this,"converToQueryParam",(function(t){var e=i.extractFilter();return t+o.stringify({filter:JSON.stringify(e)})}));var h=e({},s);null!=h&&h.details&&delete h.details,this._state=h,this._defaultFilter=r}),[{key:"state",get:function(){return e({},this._state)}},{key:"addFilterItem",value:function(t,s,r){var n,o,h=null!==(n=null===(o=this._state.filter)||void 0===o?void 0:o[t])&&void 0!==n?n:[];if(h.some((function(t){return t.value===s.value})))this._state=e(e({},this._state),{},{details:e(e({},r),{},{action:"add",isChanged:!1})});else{var u=[].concat(i(h),[s]),l=e(e({},this._state.filter),{},a({},t,u));this._state=e(e({},this._state),{},{filter:l,details:e(e({},r),{},{action:"add",isChanged:!0})})}return this}},{key:"removeFilterFiled",value:function(t,i){var a=this._state.filter;if(a&&a[t]&&a[t].length>0){a[t];var n=s(a,[t].map(r)),o=Object.keys(n).length>0;this._state=e(e({},this._state),{},{filter:o?n:void 0,details:e(e({},i),{},{action:"remove",isChanged:!0})})}return this}},{key:"removeFilterItem",value:function(t,i,n){var o=this._state.filter;if(!o||!o[t]||0===o[t].length)return this._state=e(e({},this._state),{},{details:e(e({},n),{},{action:"remove",isChanged:!1})}),this;var h=o[t],u=h.findIndex((function(t){return t.value===i}));if(-1===u)return this._state=e(e({},this._state),{},{details:e(e({},n),{},{action:"remove",isChanged:!1})}),this;var l=h.filter((function(t,e){return e!==u}));if(0===l.length){o[t];var c=s(o,[t].map(r)),v=Object.keys(c).length>0;this._state=e(e({},this._state),{},{filter:v?c:void 0,details:e(e({},n),{},{action:"remove",isChanged:!0})})}else{var d=e(e({},o),{},a({},t,l));this._state=e(e({},this._state),{},{filter:d,details:e(e({},n),{},{action:"remove",isChanged:!0})})}return this}},{key:"updateFilter",value:function(t,i){return this._state=e(e({},this._state),{},{filter:t,details:e(e({},i),{},{action:"change"})}),this}},{key:"addQuickSearch",value:function(t,a){var s,r=null!==(s=this._state.quickSearch)&&void 0!==s?s:[],n=null!=t?t:[],o=[].concat(i(Array.isArray(r)?r:[r]),i(Array.isArray(n)?n:[n])),h=Array.from(new Set(o)),u=new Set(Array.isArray(r)?r:[r]),l=h.length!==u.size||h.some((function(t){return!u.has(t)}));return l&&(this._state=e(e({},this._state),{},{quickSearch:h,details:e(e({},a),{},{action:"add",isChanged:l})})),this}},{key:"removeQuickSearch",value:function(t){return this._state=e(e({},this._state),{},{quickSearch:void 0,details:e(e({},t),{},{action:"remove",isChanged:!0})}),this}},{key:"removeQuickSearchItem",value:function(t,i){var a=this._state.quickSearch;if(!a)return this._state=e(e({},this._state),{},{details:e(e({},i),{},{action:"remove",isChanged:!1})}),this;var s=Array.isArray(a)?a:[a];if(-1===s.indexOf(t))return this._state=e(e({},this._state),{},{details:e(e({},i),{},{action:"remove",isChanged:!1})}),this;var r=s.filter((function(e){return e!==t}));return 0===r.length?this._state=e(e({},this._state),{},{quickSearch:void 0,details:e(e({},i),{},{action:"remove",isChanged:!0})}):this._state=e(e({},this._state),{},{quickSearch:1===r.length?r[0]:r,details:e(e({},i),{},{action:"remove",isChanged:!0})}),this}},{key:"updateSearchInput",value:function(t){return this._state=e(e({},this._state),{},{quickSearch:t,details:{reason:"quickSearch",area:"input",action:"change",isChanged:!0}}),this}},{key:"changePagination",value:function(t){var i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{area:"filterButton"};return this._state=e(e({},this._state),{},{pagination:t,details:e(e({},i),{},{action:"change",isChanged:!0})}),this}},{key:"removePagination",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{area:"filterButton"};return this._state=e(e({},this._state),{},{pagination:void 0,details:e(e({},t),{},{action:"remove",isChanged:!0})}),this}},{key:"changeSort",value:function(t){var i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{area:"sortButton"};return this._state=e(e({},this._state),{},{sort:t,details:e(e({},i),{},{action:"change"})}),this}},{key:"removeSort",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{area:"sortButton"};return this._state=e(e({},this._state),{},{sort:void 0,details:e(e({},t),{},{action:"remove"})}),this}},{key:"toggleSortDirection",value:function(t){var i=this._state.sort;if(!i)return this;var a=e(e({},i),{},{direction:"asc"===i.direction?"desc":"asc"});return this._state=e(e({},this._state),{},{sort:a,details:e(e({},t),{},{action:"change"})}),this}},{key:"updateState",value:function(t){var i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{area:"filterButton"};return this._state=e(e(e({},this._state),t),{},{details:e(e({},i),{},{action:"change"})}),this}},{key:"reset",value:function(){return this._state=e(e({},this._defaultFilter),{},{details:{action:"reset",isChanged:!0}}),this}},{key:"resetFilter",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{area:"filterButton"};return this._state=e(e({},this._state),{},{filter:void 0,details:e({action:"reset",reason:"field"},t)}),this}},{key:"resetQuickSearch",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{area:"input"};return this._state=e(e({},this._state),{},{quickSearch:void 0,details:e({action:"reset",reason:"quickSearch"},t)}),this}},{key:"resetPagination",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{reason:"pagination"};return this._state=e(e({},this._state),{},{pagination:void 0,details:e({action:"reset",reason:"pagination"},t)}),this}},{key:"resetSort",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{reason:"sort"};return this._state=e(e({},this._state),{},{sort:void 0,details:e({action:"reset",reason:"sort"},t)}),this}},{key:"isPaginationEqualToDefault",value:function(){var t,e=this._state.pagination,i=null===(t=this._defaultFilter)||void 0===t?void 0:t.pagination;return!e&&!i||!(!e||!i)&&(e.page===i.page&&e.pageSize===i.pageSize)}},{key:"isSortEqualToDefault",value:function(){var t,e=this._state.sort,i=null===(t=this._defaultFilter)||void 0===t?void 0:t.sort;return!e&&!i||!(!e||!i)&&(e.field===i.field&&e.direction===i.direction)}},{key:"extractFilter",value:function(){var t={};return this._state.filter&&(t.filter=this._state.filter),this._state.quickSearch&&(t.quickSearch=this._state.quickSearch),this._state.pagination&&!this.isPaginationEqualToDefault()&&(t.pagination=this._state.pagination),this._state.sort&&!this.isSortEqualToDefault()&&(t.sort=this._state.sort),t}},{key:"countFilterItems",value:function(){var t=this._state.filter;return t?Object.values(t).reduce((function(t,e){return t+(Array.isArray(e)?e.length:0)}),0):0}},{key:"hasFilter",value:function(){return!!this._state.filter&&Object.keys(this._state.filter).length>0}},{key:"hasQuickSearch",value:function(){return!!this._state.quickSearch}},{key:"hasPagination",value:function(){return!this.isPaginationEqualToDefault()&&!!this._state.pagination}},{key:"hasSort",value:function(){return!this.isSortEqualToDefault()&&!!this._state.sort}},{key:"isEmpty",value:function(){return!(this.hasFilter()||this.hasQuickSearch()||this.hasPagination()||this.hasSort())}},{key:"build",value:function(){return e({},this._state)}}])}();function u(t,e){return new h(t,e)}export{h as FilterStore,u as createFilterStore,h as default};
2
+ //# sourceMappingURL=filter-store.js.map