dinocollab-core 1.0.20 → 1.0.22
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -42
- package/dist/_virtual/_rollupPluginBabelHelpers.js +1 -1
- package/dist/filter-bar/base.js +1 -1
- package/dist/filter-bar/base.js.map +1 -1
- package/dist/filter-bar/create.filter-bar.js +1 -1
- package/dist/filter-bar/create.filter-bar.js.map +1 -1
- package/dist/filter-bar/create.filter-menu.js +1 -1
- package/dist/filter-bar/create.filter-menu.js.map +1 -1
- package/dist/filter-bar/create.filter-panel.js +1 -1
- package/dist/filter-bar/create.filter-panel.js.map +1 -1
- package/dist/filter-bar/create.filtered.js +1 -1
- package/dist/filter-bar/create.filtered.js.map +1 -1
- package/dist/filter-bar/types.js.map +1 -1
- package/dist/filter-bar/ui.units.js +1 -1
- package/dist/filter-bar/ui.units.js.map +1 -1
- package/dist/form/create.autocomplete.chips.js.map +1 -1
- package/dist/form/create.form-base.js +1 -1
- package/dist/form/create.form-base.js.map +1 -1
- package/dist/form/create.form-grid-layout.js +1 -1
- package/dist/form/create.form-grid-layout.js.map +1 -1
- package/dist/form/create.input-file.csv-local-parser.js.map +1 -1
- package/dist/form/create.input.js +1 -1
- package/dist/form/create.input.js.map +1 -1
- package/dist/index.js +1 -1
- package/dist/table-grid/create.table-grid.js +1 -1
- package/dist/table-grid/create.table-grid.js.map +1 -1
- package/dist/types/filter-bar/base.d.ts +10 -16
- package/dist/types/filter-bar/create.filter-bar.d.ts +3 -91
- package/dist/types/filter-bar/create.filter-menu.d.ts +6 -59
- package/dist/types/filter-bar/create.filter-panel.d.ts +7 -111
- package/dist/types/filter-bar/create.filtered.d.ts +11 -8
- package/dist/types/filter-bar/create.sort-menu.d.ts +1 -7
- package/dist/types/filter-bar/index.d.ts +0 -1
- package/dist/types/filter-bar/types.d.ts +42 -23
- package/dist/types/filter-bar/ui.units.d.ts +4 -3
- package/dist/types/form/create.autocomplete.chips.d.ts +3 -3
- package/dist/types/form/create.form-base.d.ts +15 -21
- package/dist/types/form/create.form-grid-layout.units.d.ts +6 -2
- package/dist/types/form/create.input-file.csv-local-parser.d.ts +1 -2
- package/dist/types/form/create.input.d.ts +1 -2
- package/dist/types/form/dino-form.d.ts +4 -2
- package/dist/types/form/types.d.ts +18 -7
- package/dist/types/table-grid/types.d.ts +2 -2
- package/dist/types/utils/helpers.d.ts +1 -0
- package/dist/utils/helpers.js +1 -1
- package/dist/utils/helpers.js.map +1 -1
- package/package.json +5 -2
- package/dist/filter-bar/create.sort-menu.js +0 -2
- package/dist/filter-bar/create.sort-menu.js.map +0 -1
- package/dist/types/filter-bar/demo.d.ts +0 -3
- package/dist/types/lab/create.autocomplete.simple.d.ts +0 -19
- package/dist/types/lab/create.dino-store.d.ts +0 -1
- package/dist/types/lab/grafana-dashboard/configs.d.ts +0 -4
- package/dist/types/lab/grafana-dashboard/date-time-range/absolute-time-rage.d.ts +0 -14
- package/dist/types/lab/grafana-dashboard/date-time-range/helpers.d.ts +0 -36
- package/dist/types/lab/grafana-dashboard/date-time-range/index.d.ts +0 -24
- package/dist/types/lab/grafana-dashboard/date-time-range/menu-wrap.d.ts +0 -19
- package/dist/types/lab/grafana-dashboard/date-time-range/quick-ranges.d.ts +0 -20
- package/dist/types/lab/grafana-dashboard/date-time-range/types.d.ts +0 -8
- package/dist/types/lab/grafana-dashboard/date-time-range/units.d.ts +0 -2
- package/dist/types/lab/grafana-dashboard/helper.d.ts +0 -7
- package/dist/types/lab/grafana-dashboard/hooks.d.ts +0 -10
- package/dist/types/lab/grafana-dashboard/icons.d.ts +0 -5
- package/dist/types/lab/grafana-dashboard/index.d.ts +0 -12
- package/dist/types/lab/grafana-dashboard/top-bar.d.ts +0 -19
- package/dist/types/lab/grafana-dashboard/top-bar.types.d.ts +0 -4
- package/dist/types/lab/grafana-dashboard/types.d.ts +0 -8
- package/dist/types/lab/media-player.core1.d.ts +0 -14
- package/dist/types/lab/media-player.muted.d.ts +0 -10
- package/dist/types/lab/media-player.units.d.ts +0 -36
- package/dist/types/lab/select-mul-with-api/create.select-mul-with-api.d.ts +0 -26
- package/dist/types/lab/select-mul-with-api/index.d.ts +0 -2
- package/dist/types/lab/select-mul-with-api/table-custom.d.ts +0 -43
- package/dist/types/lab/select-mul-with-api/types.d.ts +0 -21
- package/dist/types/lab/select-mul-with-api/ui.units.d.ts +0 -29
package/README.md
CHANGED
|
@@ -18,52 +18,11 @@ pnpm add @mui/material@5.17.1 @mui/icons-material@5.17.1 clipboard-copy@4.0.1 re
|
|
|
18
18
|
pnpm add @types/jest@27.0.1 -D
|
|
19
19
|
```
|
|
20
20
|
|
|
21
|
-
## 📦 Cài đặt
|
|
22
|
-
|
|
23
|
-
DinoForm được đóng gói dưới dạng module nội bộ, bạn có thể import và sử dụng trực tiếp như sau:
|
|
24
|
-
|
|
25
|
-
```ts
|
|
26
|
-
import DinoForm from 'dino-core/DinoForm'
|
|
27
|
-
```
|
|
28
|
-
|
|
29
|
-
📌 Thiết lập alias trong `tsconfig.json` để gọn hơn:
|
|
30
|
-
|
|
31
|
-
```json
|
|
32
|
-
{
|
|
33
|
-
"paths": {
|
|
34
|
-
"@dino-core/*": ["<path to>/dino/*"]
|
|
35
|
-
}
|
|
36
|
-
}
|
|
37
|
-
```
|
|
38
|
-
|
|
39
|
-
📌 Thiết lập cấu hình build:
|
|
40
|
-
|
|
41
|
-
Tùy chọn 1: `config-overrides.js`
|
|
42
|
-
|
|
43
|
-
```js
|
|
44
|
-
addWebpackAlias({
|
|
45
|
-
'dino-core': path.resolve(__dirname, '<path to>/dino-core/react18')
|
|
46
|
-
})
|
|
47
|
-
```
|
|
48
|
-
|
|
49
|
-
Tùy chọn 2: `webpack.config.js`
|
|
50
|
-
|
|
51
|
-
```js
|
|
52
|
-
{
|
|
53
|
-
resolve: {
|
|
54
|
-
extensions: ['.tsx', '.ts', '.js', '.mjs'],
|
|
55
|
-
alias: {
|
|
56
|
-
'dino-core': path.resolve(__dirname, '<path to>/dino-core/react18'),
|
|
57
|
-
}
|
|
58
|
-
}
|
|
59
|
-
}
|
|
60
|
-
```
|
|
61
|
-
|
|
62
21
|
## 📦 Build npm - dinocollab-core
|
|
63
22
|
|
|
64
23
|
```
|
|
65
|
-
npm run build
|
|
66
24
|
npm version <patch|minor|major>
|
|
25
|
+
npm run build
|
|
67
26
|
npm publish
|
|
68
27
|
```
|
|
69
28
|
|
|
@@ -1,2 +1,2 @@
|
|
|
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,p()?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,I(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 s(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 l(t,r,e){return(r=I(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 h(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&&S(t,r)}function p(){try{var t=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){})))}catch(t){}return(p=function(){return!!t})()}function b(t){if("undefined"!=typeof Symbol&&null!=t[Symbol.iterator]||null!=t["@@iterator"])return Array.from(t)}function v(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 d(){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 g(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 w(t){for(var r=1;r<arguments.length;r++){var e=null!=arguments[r]?arguments[r]:{};r%2?g(Object(e),!0).forEach((function(r){l(t,r,e[r])})):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(e)):g(Object(e)).forEach((function(r){Object.defineProperty(t,r,Object.getOwnPropertyDescriptor(e,r))}))}return t}function O(t,r){if(null==t)return{};var e,n,o=j(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 j(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 E(){E=function(){return r};var t,r={},e=Object.prototype,n=e.hasOwnProperty,o="function"==typeof Symbol?Symbol:{},i=o.iterator||"@@iterator",a=o.asyncIterator||"@@asyncIterator",u=o.toStringTag||"@@toStringTag";function c(t,r,e,n){return Object.defineProperty(t,r,{value:e,enumerable:!n,configurable:!n,writable:!n})}try{c({},"")}catch(t){c=function(t,r,e){return t[r]=e}}function f(r,e,n,o){var i=e&&e.prototype instanceof y?e:y,a=Object.create(i.prototype);return c(a,"_invoke",function(r,e,n){var o=1;return function(i,a){if(3===o)throw Error("Generator is already running");if(4===o){if("throw"===i)throw a;return{value:t,done:!0}}for(n.method=i,n.arg=a;;){var u=n.delegate;if(u){var c=O(u,n);if(c){if(c===l)continue;return c}}if("next"===n.method)n.sent=n._sent=n.arg;else if("throw"===n.method){if(1===o)throw o=4,n.arg;n.dispatchException(n.arg)}else"return"===n.method&&n.abrupt("return",n.arg);o=3;var f=s(r,e,n);if("normal"===f.type){if(o=n.done?4:2,f.arg===l)continue;return{value:f.arg,done:n.done}}"throw"===f.type&&(o=4,n.method="throw",n.arg=f.arg)}}}(r,n,new S(o||[])),!0),a}function s(t,r,e){try{return{type:"normal",arg:t.call(r,e)}}catch(t){return{type:"throw",arg:t}}}r.wrap=f;var l={};function y(){}function h(){}function p(){}var b={};c(b,i,(function(){return this}));var v=Object.getPrototypeOf,d=v&&v(v(x([])));d&&d!==e&&n.call(d,i)&&(b=d);var m=p.prototype=y.prototype=Object.create(b);function g(t){["next","throw","return"].forEach((function(r){c(t,r,(function(t){return this._invoke(r,t)}))}))}function w(t,r){function e(o,i,a,u){var c=s(t[o],t,i);if("throw"!==c.type){var f=c.arg,l=f.value;return l&&"object"==typeof l&&n.call(l,"__await")?r.resolve(l.__await).then((function(t){e("next",t,a,u)}),(function(t){e("throw",t,a,u)})):r.resolve(l).then((function(t){f.value=t,a(f)}),(function(t){return e("throw",t,a,u)}))}u(c.arg)}var o;c(this,"_invoke",(function(t,n){function i(){return new r((function(r,o){e(t,n,r,o)}))}return o=o?o.then(i,i):i()}),!0)}function O(r,e){var n=e.method,o=r.i[n];if(o===t)return e.delegate=null,"throw"===n&&r.i.return&&(e.method="return",e.arg=t,O(r,e),"throw"===e.method)||"return"!==n&&(e.method="throw",e.arg=new TypeError("The iterator does not provide a '"+n+"' method")),l;var i=s(o,r.i,e.arg);if("throw"===i.type)return e.method="throw",e.arg=i.arg,e.delegate=null,l;var a=i.arg;return a?a.done?(e[r.r]=a.value,e.next=r.n,"return"!==e.method&&(e.method="next",e.arg=t),e.delegate=null,l):a:(e.method="throw",e.arg=new TypeError("iterator result is not an object"),e.delegate=null,l)}function j(t){this.tryEntries.push(t)}function P(r){var e=r[4]||{};e.type="normal",e.arg=t,r[4]=e}function S(t){this.tryEntries=[[-1]],t.forEach(j,this),this.reset(!0)}function x(r){if(null!=r){var e=r[i];if(e)return e.call(r);if("function"==typeof r.next)return r;if(!isNaN(r.length)){var o=-1,a=function e(){for(;++o<r.length;)if(n.call(r,o))return e.value=r[o],e.done=!1,e;return e.value=t,e.done=!0,e};return a.next=a}}throw new TypeError(typeof r+" is not iterable")}return h.prototype=p,c(m,"constructor",p),c(p,"constructor",h),h.displayName=c(p,u,"GeneratorFunction"),r.isGeneratorFunction=function(t){var r="function"==typeof t&&t.constructor;return!!r&&(r===h||"GeneratorFunction"===(r.displayName||r.name))},r.mark=function(t){return Object.setPrototypeOf?Object.setPrototypeOf(t,p):(t.__proto__=p,c(t,u,"GeneratorFunction")),t.prototype=Object.create(m),t},r.awrap=function(t){return{__await:t}},g(w.prototype),c(w.prototype,a,(function(){return this})),r.AsyncIterator=w,r.async=function(t,e,n,o,i){void 0===i&&(i=Promise);var a=new w(f(t,e,n,o),i);return r.isGeneratorFunction(e)?a:a.next().then((function(t){return t.done?t.value:a.next()}))},g(m),c(m,u,"Generator"),c(m,i,(function(){return this})),c(m,"toString",(function(){return"[object Generator]"})),r.keys=function(t){var r=Object(t),e=[];for(var n in r)e.unshift(n);return function t(){for(;e.length;)if((n=e.pop())in r)return t.value=n,t.done=!1,t;return t.done=!0,t}},r.values=x,S.prototype={constructor:S,reset:function(r){if(this.prev=this.next=0,this.sent=this._sent=t,this.done=!1,this.delegate=null,this.method="next",this.arg=t,this.tryEntries.forEach(P),!r)for(var e in this)"t"===e.charAt(0)&&n.call(this,e)&&!isNaN(+e.slice(1))&&(this[e]=t)},stop:function(){this.done=!0;var t=this.tryEntries[0][4];if("throw"===t.type)throw t.arg;return this.rval},dispatchException:function(r){if(this.done)throw r;var e=this;function n(t){a.type="throw",a.arg=r,e.next=t}for(var o=e.tryEntries.length-1;o>=0;--o){var i=this.tryEntries[o],a=i[4],u=this.prev,c=i[1],f=i[2];if(-1===i[0])return n("end"),!1;if(!c&&!f)throw Error("try statement without catch or finally");if(null!=i[0]&&i[0]<=u){if(u<c)return this.method="next",this.arg=t,n(c),!0;if(u<f)return n(f),!1}}},abrupt:function(t,r){for(var e=this.tryEntries.length-1;e>=0;--e){var n=this.tryEntries[e];if(n[0]>-1&&n[0]<=this.prev&&this.prev<n[2]){var o=n;break}}o&&("break"===t||"continue"===t)&&o[0]<=r&&r<=o[2]&&(o=null);var i=o?o[4]:{};return i.type=t,i.arg=r,o?(this.method="next",this.next=o[2],l):this.complete(i)},complete:function(t,r){if("throw"===t.type)throw t.arg;return"break"===t.type||"continue"===t.type?this.next=t.arg:"return"===t.type?(this.rval=this.arg=t.arg,this.method="return",this.next="end"):"normal"===t.type&&r&&(this.next=r),l},finish:function(t){for(var r=this.tryEntries.length-1;r>=0;--r){var e=this.tryEntries[r];if(e[2]===t)return this.complete(e[4],e[3]),P(e),l}},catch:function(t){for(var r=this.tryEntries.length-1;r>=0;--r){var e=this.tryEntries[r];if(e[0]===t){var n=e[4];if("throw"===n.type){var o=n.arg;P(e)}return o}}throw Error("illegal catch attempt")},delegateYield:function(r,e,n){return this.delegate={i:x(r),r:e,n:n},"next"===this.method&&(this.arg=t),l}},r}function S(t,r){return S=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(t,r){return t.__proto__=r,t},S(t,r)}function x(t,e){return r(t)||v(t,e)||G(t,e)||d()}function _(t){return r(t)||b(t)||G(t)||d()}function A(t){return e(t)||b(t)||G(t)||m()}function T(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 I(t){var r=T(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,s as createForOfIteratorHelper,l as defineProperty,y as getPrototypeOf,h as inherits,p as isNativeReflectConstruct,b as iterableToArray,v as iterableToArrayLimit,d as nonIterableRest,m as nonIterableSpread,w as objectSpread2,O as objectWithoutProperties,j as objectWithoutPropertiesLoose,P as possibleConstructorReturn,E as regeneratorRuntime,S as setPrototypeOf,x as slicedToArray,_ as toArray,A as toConsumableArray,T as toPrimitive,I as toPropertyKey,k as typeof,G as unsupportedIterableToArray};
|
|
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,p()?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,I(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 s(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 l(t,r,e){return(r=I(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 h(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&&S(t,r)}function p(){try{var t=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){})))}catch(t){}return(p=function(){return!!t})()}function b(t){if("undefined"!=typeof Symbol&&null!=t[Symbol.iterator]||null!=t["@@iterator"])return Array.from(t)}function v(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 d(){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 g(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 w(t){for(var r=1;r<arguments.length;r++){var e=null!=arguments[r]?arguments[r]:{};r%2?g(Object(e),!0).forEach((function(r){l(t,r,e[r])})):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(e)):g(Object(e)).forEach((function(r){Object.defineProperty(t,r,Object.getOwnPropertyDescriptor(e,r))}))}return t}function O(t,r){if(null==t)return{};var e,n,o=j(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 j(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 E(){E=function(){return r};var t,r={},e=Object.prototype,n=e.hasOwnProperty,o="function"==typeof Symbol?Symbol:{},i=o.iterator||"@@iterator",a=o.asyncIterator||"@@asyncIterator",u=o.toStringTag||"@@toStringTag";function c(t,r,e,n){Object.defineProperty(t,r,{value:e,enumerable:!n,configurable:!n,writable:!n})}try{c({},"")}catch(t){c=function(t,r,e){return t[r]=e}}function f(r,e,n,o){var i=e&&e.prototype instanceof y?e:y,a=Object.create(i.prototype);return c(a,"_invoke",function(r,e,n){var o=1;return function(i,a){if(3===o)throw Error("Generator is already running");if(4===o){if("throw"===i)throw a;return{value:t,done:!0}}for(n.method=i,n.arg=a;;){var u=n.delegate;if(u){var c=O(u,n);if(c){if(c===l)continue;return c}}if("next"===n.method)n.sent=n._sent=n.arg;else if("throw"===n.method){if(1===o)throw o=4,n.arg;n.dispatchException(n.arg)}else"return"===n.method&&n.abrupt("return",n.arg);o=3;var f=s(r,e,n);if("normal"===f.type){if(o=n.done?4:2,f.arg===l)continue;return{value:f.arg,done:n.done}}"throw"===f.type&&(o=4,n.method="throw",n.arg=f.arg)}}}(r,n,new S(o||[])),!0),a}function s(t,r,e){try{return{type:"normal",arg:t.call(r,e)}}catch(t){return{type:"throw",arg:t}}}r.wrap=f;var l={};function y(){}function h(){}function p(){}var b={};c(b,i,(function(){return this}));var v=Object.getPrototypeOf,d=v&&v(v(x([])));d&&d!==e&&n.call(d,i)&&(b=d);var m=p.prototype=y.prototype=Object.create(b);function g(t){["next","throw","return"].forEach((function(r){c(t,r,(function(t){return this._invoke(r,t)}))}))}function w(t,r){function e(o,i,a,u){var c=s(t[o],t,i);if("throw"!==c.type){var f=c.arg,l=f.value;return l&&"object"==typeof l&&n.call(l,"__await")?r.resolve(l.__await).then((function(t){e("next",t,a,u)}),(function(t){e("throw",t,a,u)})):r.resolve(l).then((function(t){f.value=t,a(f)}),(function(t){return e("throw",t,a,u)}))}u(c.arg)}var o;c(this,"_invoke",(function(t,n){function i(){return new r((function(r,o){e(t,n,r,o)}))}return o=o?o.then(i,i):i()}),!0)}function O(r,e){var n=e.method,o=r.i[n];if(o===t)return e.delegate=null,"throw"===n&&r.i.return&&(e.method="return",e.arg=t,O(r,e),"throw"===e.method)||"return"!==n&&(e.method="throw",e.arg=new TypeError("The iterator does not provide a '"+n+"' method")),l;var i=s(o,r.i,e.arg);if("throw"===i.type)return e.method="throw",e.arg=i.arg,e.delegate=null,l;var a=i.arg;return a?a.done?(e[r.r]=a.value,e.next=r.n,"return"!==e.method&&(e.method="next",e.arg=t),e.delegate=null,l):a:(e.method="throw",e.arg=new TypeError("iterator result is not an object"),e.delegate=null,l)}function j(t){this.tryEntries.push(t)}function P(r){var e=r[4]||{};e.type="normal",e.arg=t,r[4]=e}function S(t){this.tryEntries=[[-1]],t.forEach(j,this),this.reset(!0)}function x(r){if(null!=r){var e=r[i];if(e)return e.call(r);if("function"==typeof r.next)return r;if(!isNaN(r.length)){var o=-1,a=function e(){for(;++o<r.length;)if(n.call(r,o))return e.value=r[o],e.done=!1,e;return e.value=t,e.done=!0,e};return a.next=a}}throw new TypeError(typeof r+" is not iterable")}return h.prototype=p,c(m,"constructor",p),c(p,"constructor",h),c(p,u,h.displayName="GeneratorFunction"),r.isGeneratorFunction=function(t){var r="function"==typeof t&&t.constructor;return!!r&&(r===h||"GeneratorFunction"===(r.displayName||r.name))},r.mark=function(t){return Object.setPrototypeOf?Object.setPrototypeOf(t,p):(t.__proto__=p,c(t,u,"GeneratorFunction")),t.prototype=Object.create(m),t},r.awrap=function(t){return{__await:t}},g(w.prototype),c(w.prototype,a,(function(){return this})),r.AsyncIterator=w,r.async=function(t,e,n,o,i){void 0===i&&(i=Promise);var a=new w(f(t,e,n,o),i);return r.isGeneratorFunction(e)?a:a.next().then((function(t){return t.done?t.value:a.next()}))},g(m),c(m,u,"Generator"),c(m,i,(function(){return this})),c(m,"toString",(function(){return"[object Generator]"})),r.keys=function(t){var r=Object(t),e=[];for(var n in r)e.unshift(n);return function t(){for(;e.length;)if((n=e.pop())in r)return t.value=n,t.done=!1,t;return t.done=!0,t}},r.values=x,S.prototype={constructor:S,reset:function(r){if(this.prev=this.next=0,this.sent=this._sent=t,this.done=!1,this.delegate=null,this.method="next",this.arg=t,this.tryEntries.forEach(P),!r)for(var e in this)"t"===e.charAt(0)&&n.call(this,e)&&!isNaN(+e.slice(1))&&(this[e]=t)},stop:function(){this.done=!0;var t=this.tryEntries[0][4];if("throw"===t.type)throw t.arg;return this.rval},dispatchException:function(r){if(this.done)throw r;var e=this;function n(t){a.type="throw",a.arg=r,e.next=t}for(var o=e.tryEntries.length-1;o>=0;--o){var i=this.tryEntries[o],a=i[4],u=this.prev,c=i[1],f=i[2];if(-1===i[0])return n("end"),!1;if(!c&&!f)throw Error("try statement without catch or finally");if(null!=i[0]&&i[0]<=u){if(u<c)return this.method="next",this.arg=t,n(c),!0;if(u<f)return n(f),!1}}},abrupt:function(t,r){for(var e=this.tryEntries.length-1;e>=0;--e){var n=this.tryEntries[e];if(n[0]>-1&&n[0]<=this.prev&&this.prev<n[2]){var o=n;break}}o&&("break"===t||"continue"===t)&&o[0]<=r&&r<=o[2]&&(o=null);var i=o?o[4]:{};return i.type=t,i.arg=r,o?(this.method="next",this.next=o[2],l):this.complete(i)},complete:function(t,r){if("throw"===t.type)throw t.arg;return"break"===t.type||"continue"===t.type?this.next=t.arg:"return"===t.type?(this.rval=this.arg=t.arg,this.method="return",this.next="end"):"normal"===t.type&&r&&(this.next=r),l},finish:function(t){for(var r=this.tryEntries.length-1;r>=0;--r){var e=this.tryEntries[r];if(e[2]===t)return this.complete(e[4],e[3]),P(e),l}},catch:function(t){for(var r=this.tryEntries.length-1;r>=0;--r){var e=this.tryEntries[r];if(e[0]===t){var n=e[4];if("throw"===n.type){var o=n.arg;P(e)}return o}}throw Error("illegal catch attempt")},delegateYield:function(r,e,n){return this.delegate={i:x(r),r:e,n:n},"next"===this.method&&(this.arg=t),l}},r}function S(t,r){return S=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(t,r){return t.__proto__=r,t},S(t,r)}function x(t,e){return r(t)||v(t,e)||G(t,e)||d()}function _(t){return r(t)||b(t)||G(t)||d()}function A(t){return e(t)||b(t)||G(t)||m()}function T(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 I(t){var r=T(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,s as createForOfIteratorHelper,l as defineProperty,y as getPrototypeOf,h as inherits,p as isNativeReflectConstruct,b as iterableToArray,v as iterableToArrayLimit,d as nonIterableRest,m as nonIterableSpread,w as objectSpread2,O as objectWithoutProperties,j as objectWithoutPropertiesLoose,P as possibleConstructorReturn,E as regeneratorRuntime,S as setPrototypeOf,x as slicedToArray,_ as toArray,A as toConsumableArray,T as toPrimitive,I as toPropertyKey,k as typeof,G as unsupportedIterableToArray};
|
|
2
2
|
//# sourceMappingURL=_rollupPluginBabelHelpers.js.map
|
package/dist/filter-bar/base.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{inherits as e,createClass as r,classCallCheck as t,callSuper as i,defineProperty as a,toConsumableArray as
|
|
1
|
+
import{inherits as e,createClass as r,classCallCheck as t,callSuper as i,defineProperty as a,toConsumableArray as l,objectSpread2 as n,objectWithoutProperties as u,createForOfIteratorHelper as o}from"../_virtual/_rollupPluginBabelHelpers.js";import{Component as s}from"react";import{ESearchMatch as c,EFieldValidate as f}from"./types.js";var v=["field"],d={root:"FilterPanel-root",list:"FilterPanel-list",item:"FilterPanel-item"},h=function(){function d(){var e;t(this,d);for(var r=arguments.length,s=new Array(r),h=0;h<r;h++)s[h]=arguments[h];return e=i(this,d,[].concat(s)),a(e,"mergeFilter",(function(e,r){var t,i,a=null!==(t=null==r?void 0:r.filter)&&void 0!==t?t:{};if(null!=e&&e.filter){var n=function(){var r,t,i=u,n=null!==(r=a[i])&&void 0!==r?r:[],o=null!==(t=null==e?void 0:e.filter[i])&&void 0!==t?t:[],s=new Set(n.map((function(e){return e.value}))),c=[].concat(l(n),l(o.filter((function(e){return!s.has(e.value)}))));c.length>0&&(a[i]=c)};for(var u in null==e?void 0:e.filter)n()}return{filter:Object.keys(a).length?a:{},details:null!==(i=null==r?void 0:r.details)&&void 0!==i?i:null==e?void 0:e.details}})),a(e,"addQuickSearch",(function(e,r,t){var i,a;if(!t||!r)return{isChanged:!1,filterState:e};var l=n({},e),u=new Set(null!==(i=null===(a=l.quickSearch)||void 0===a?void 0:a.values)&&void 0!==i?i:[]),o=!u.has(t);return u.add(t),l.quickSearch={fields:r.fields,values:Array.from(u)},{isChanged:o,filterState:l}})),a(e,"removeQuickSearch",(function(e){var r=n({},e);return"quickSearch"in r&&delete r.quickSearch,{isChanged:!!e.quickSearch,filterState:r}})),a(e,"patchFilterWithKey",(function(e,r){var t,i=r.field,a=u(r,v),o=n({},e.filter||{}),s=null!==(t=o[i])&&void 0!==t?t:[],c=!s.map((function(e){return e.value})).includes(a.value);return c&&(s=[].concat(l(s),[a])),o[i]=s,{isChanged:c,filterState:n(n({},e),{},{filter:o})}})),a(e,"deleteFilterWithKey",(function(e,r){var t=n({},e.filter||{}),i=r.field in t;return i&&delete t[r.field],{isChanged:i,filterState:n(n({},e),{},{filter:t})}})),a(e,"isFilterEmpty",(function(e){var r,t=Object.values(null!==(r=e.filter)&&void 0!==r?r:{});return t.length<1||t.every((function(e){return!!e&&e.length<1}))})),a(e,"isYoutubeLink",(function(e){return/^https?:\/\/(www\.)?(youtube\.com|youtu\.be)\//.test(e)})),a(e,"isGenericLink",(function(e){return/^https?:\/\/[^ ]+$/.test(e)})),a(e,"isGuid",(function(e){return/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i.test(e)})),a(e,"getFieldsMatches",(function(r,t,i){var a=t.trim().toLowerCase();if(!a)return r;var l={};for(var n in r){var u=n,s=r[u];if(s){var f,v=Array.isArray(s.searchMatches)?s.searchMatches:s.searchMatches?[s.searchMatches]:[],d=!1,h=o(v);try{for(h.s();!(f=h.n()).done;){var k=f.value;switch(k.rule){case c.AlwaysVisible:d=!0;break;case c.MatchOnly:"function"==typeof k.match&&k.match(a)&&(d=!0);break;case c.LinkYoutube:e.isYoutubeLink(a)&&(d=!0);break;case c.Link:e.isGenericLink(a)&&(d=!0);break;case c.Guid:e.isGuid(a)&&(d=!0)}if(d)break}}catch(e){h.e(e)}finally{h.f()}d&&(l[u]=s)}}return 0===Object.keys(l).length?i?r:{}:l})),a(e,"validated",(function(r,t,i){var a,l=r.trim().toLowerCase();if(!l)return{error:!0,message:"The ".concat(t.toString()," is required ")};var n,u=Array.isArray(null==i?void 0:i.validate)?null!==(a=null==i?void 0:i.validate)&&void 0!==a?a:[]:null!=i&&i.validate?[i.validate]:[],s={error:!1},c=o(u);try{for(c.s();!(n=c.n()).done;){var v=n.value;switch(v.rule){case f.LinkYoutube:var d;if(!e.isYoutubeLink(l))s.error=!0,s.message="The ".concat(null!==(d=null==i?void 0:i.label)&&void 0!==d?d:t.toString()," must be a valid YouTube link");break;case f.Link:var h;if(!e.isGenericLink(l))s.error=!0,s.message="The ".concat(null!==(h=null==i?void 0:i.label)&&void 0!==h?h:t.toString()," must be a valid URL link");break;case f.Custom:var k;if("function"==typeof v.custom&&!v.custom(l))s.error=!0,s.message="The ".concat(null!==(k=null==i?void 0:i.label)&&void 0!==k?k:t.toString()," is invalid")}if(s.error)break}}catch(e){c.e(e)}finally{c.f()}return s})),e}return e(d,s),r(d)}();export{h as default,d as filterPanelClasses};
|
|
2
2
|
//# sourceMappingURL=base.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"base.js","sources":["../../src/filter-bar/base.tsx"],"sourcesContent":["import React, { Component } from 'react'\r\nimport { EFieldValidate, ESearchMatch, IFilterField, IFilterFields, IFilterItemModel, IFilterModel, IFilterState } from './types'\r\n\r\nexport const filterPanelClasses = {\r\n root: 'FilterPanel-root',\r\n list: 'FilterPanel-list',\r\n item: 'FilterPanel-item'\r\n}\r\n\r\nexport default class FilterBarBase<P, S, T = any> extends Component<P, S> {\r\n //#region Filter\r\n mergeFilter = (f1?: IFilterState<T>, f2?: IFilterState<T>): IFilterState<T> => {\r\n const mergedFilter: IFilterModel<T> = f2?.filter ?? {}\r\n\r\n if (f1?.filter) {\r\n for (const key in f1?.filter) {\r\n const fieldKey = key as keyof T\r\n const existingItems = mergedFilter[fieldKey] ?? []\r\n const newItems = f1?.filter[fieldKey] ?? []\r\n\r\n const existingValues = new Set(existingItems.map((item) => item.value))\r\n\r\n const mergedItems = [...existingItems, ...newItems.filter((item) => !existingValues.has(item.value))]\r\n\r\n if (mergedItems.length > 0) {\r\n mergedFilter[fieldKey] = mergedItems\r\n }\r\n }\r\n }\r\n\r\n const result: IFilterState<T> = {\r\n filter: Object.keys(mergedFilter).length ? mergedFilter : {},\r\n details: f2?.details ?? f1?.details\r\n }\r\n\r\n return result\r\n }\r\n\r\n patchFilterWithKey = (filterState: IFilterState<T>, key: keyof IFilterModel<T>, value: IFilterItemModel) => {\r\n const clonedFilter: IFilterModel<T> = { ...(filterState.filter || {}) }\r\n let filter = clonedFilter[key] ?? []\r\n const isChanged = !filter.map((x) => x.value).includes(value.value)\r\n if (isChanged) filter = [...filter, value]\r\n clonedFilter[key] = filter\r\n return { isChanged, filterState: { ...filterState, filter: clonedFilter } }\r\n }\r\n\r\n deleteFilterWithKey = (filterState: IFilterState<T>, key: keyof IFilterModel<T>) => {\r\n const clonedFilter: IFilterModel<T> = { ...(filterState.filter || {}) }\r\n const isChanged = key in clonedFilter\r\n if (isChanged) delete clonedFilter[key]\r\n return { isChanged, filterState: { ...filterState, filter: clonedFilter } }\r\n }\r\n\r\n isFilterEmpty = (filterState: IFilterState<T>) => {\r\n const values = Object.values(filterState.filter ?? {})\r\n return values.length < 1 || values.every((x) => x.length < 1)\r\n }\r\n //#endregion\r\n\r\n //#region Field\r\n isYoutubeLink = (val: string) => /^https?:\\/\\/(www\\.)?(youtube\\.com|youtu\\.be)\\//.test(val)\r\n\r\n isGenericLink = (val: string) => /^https?:\\/\\/[^ ]+$/.test(val)\r\n\r\n isGuid = (val: string) => /^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i.test(val)\r\n\r\n getFieldsMatches = (fields: IFilterFields<T>, keyword: string, showAll?: boolean): IFilterFields<T> => {\r\n const trimmed = keyword.trim().toLowerCase()\r\n if (!trimmed) return fields\r\n\r\n const matched: IFilterFields<T> = {}\r\n\r\n for (const key in fields) {\r\n const field = key as keyof IFilterFields<T>\r\n const config = fields[field]\r\n if (!config) continue\r\n\r\n const matches = Array.isArray(config.searchMatches) ? config.searchMatches : config.searchMatches ? [config.searchMatches] : []\r\n\r\n let visible = false\r\n\r\n for (const matchObj of matches) {\r\n switch (matchObj.rule) {\r\n case ESearchMatch.AlwaysVisible:\r\n visible = true\r\n break\r\n case ESearchMatch.MatchOnly:\r\n if (typeof matchObj.match === 'function') {\r\n if (matchObj.match(trimmed)) visible = true\r\n }\r\n break\r\n case ESearchMatch.LinkYoutube:\r\n if (this.isYoutubeLink(trimmed)) visible = true\r\n break\r\n case ESearchMatch.Link:\r\n if (this.isGenericLink(trimmed)) visible = true\r\n break\r\n case ESearchMatch.Guid:\r\n if (this.isGuid(trimmed)) visible = true\r\n break\r\n default:\r\n break\r\n }\r\n\r\n if (visible) break\r\n }\r\n\r\n if (visible) matched[field] = config\r\n }\r\n return Object.keys(matched).length === 0 ? (showAll ? fields : {}) : matched\r\n }\r\n\r\n validated = (value: string, fieldKey: keyof IFilterModel<T>, filterField?: IFilterField): { error: boolean; message?: string } => {\r\n const trimmed = value.trim().toLowerCase()\r\n if (!trimmed) return { error: true, message: `The ${fieldKey.toString()} is required ` }\r\n const validate = Array.isArray(filterField?.validate) ? (filterField?.validate ?? []) : filterField?.validate ? [filterField.validate] : []\r\n const obj: { error: boolean; message?: string } = { error: false }\r\n for (const validateObj of validate) {\r\n switch (validateObj.rule) {\r\n case EFieldValidate.LinkYoutube:\r\n if (!this.isYoutubeLink(trimmed)) {\r\n obj.error = true\r\n obj.message = `The ${filterField?.label ?? fieldKey.toString()} must be a valid YouTube link`\r\n }\r\n break\r\n\r\n case EFieldValidate.Link:\r\n if (!this.isGenericLink(trimmed)) {\r\n obj.error = true\r\n obj.message = `The ${filterField?.label ?? fieldKey.toString()} must be a valid URL link`\r\n }\r\n break\r\n\r\n case EFieldValidate.Custom:\r\n if (typeof validateObj.custom === 'function' && !validateObj.custom(trimmed)) {\r\n obj.error = true\r\n obj.message = `The ${filterField?.label ?? fieldKey.toString()} is invalid`\r\n }\r\n break\r\n default:\r\n break\r\n }\r\n if (obj.error) break\r\n }\r\n return obj\r\n }\r\n //#endregion\r\n\r\n //#region Sort\r\n getSortFields = (fields: IFilterFields<T>) => {\r\n const keys = Object.keys(fields) as (keyof IFilterFields<T>)[]\r\n return keys.reduce<IFilterFields<T>>((a, b) => {\r\n const item = fields[b]\r\n if (item?.sortable !== false) {\r\n a[b] = item\r\n }\r\n return a\r\n }, {})\r\n }\r\n //#endregion\r\n}\r\n"],"names":["filterPanelClasses","root","list","item","FilterBarBase","_this","_classCallCheck","_len","arguments","length","args","Array","_key","_callSuper","this","concat","_defineProperty","f1","f2","_f2$filter","_f2$details","mergedFilter","filter","_loop","_mergedFilter$fieldKe","_f1$filter$fieldKey","fieldKey","key","existingItems","newItems","existingValues","Set","map","value","mergedItems","_toConsumableArray","has","Object","keys","details","filterState","_clonedFilter$key","clonedFilter","_objectSpread","isChanged","x","includes","_filterState$filter","values","every","val","test","fields","keyword","showAll","trimmed","trim","toLowerCase","matched","field","config","_step","matches","isArray","searchMatches","visible","_iterator","_createForOfIteratorHelper","s","n","done","matchObj","rule","ESearchMatch","AlwaysVisible","MatchOnly","match","LinkYoutube","isYoutubeLink","Link","isGenericLink","Guid","isGuid","err","e","f","filterField","_filterField$validate","error","message","toString","_step2","validate","obj","_iterator2","validateObj","EFieldValidate","_filterField$label","label","_filterField$label2","Custom","_filterField$label3","custom","reduce","a","b","sortable","_inherits","Component","_createClass"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"base.js","sources":["../../src/filter-bar/base.tsx"],"sourcesContent":["import React, { Component } from 'react'\r\nimport { IFilterItemModel, IFilterModel, IFilterState, IQuickSearchDef } from './types'\r\nimport { EFieldValidate, ESearchMatch, IFilterField, IFilterFields, IFilterItemChangeModel } from './types'\r\n\r\nexport const filterPanelClasses = {\r\n root: 'FilterPanel-root',\r\n list: 'FilterPanel-list',\r\n item: 'FilterPanel-item'\r\n}\r\n\r\nexport interface IFilterChange<T> {\r\n isChanged: boolean\r\n filterState: IFilterState<T>\r\n}\r\n\r\nexport default class FilterBarBase<P, S, T = any> extends Component<P, S> {\r\n //#region Filter\r\n mergeFilter = (f1?: IFilterState<T>, f2?: IFilterState<T>): IFilterState<T> => {\r\n const mergedFilter: IFilterModel<T> = f2?.filter ?? {}\r\n\r\n if (f1?.filter) {\r\n for (const key in f1?.filter) {\r\n const fieldKey = key as keyof T\r\n const existingItems = mergedFilter[fieldKey] ?? []\r\n const newItems = f1?.filter[fieldKey] ?? []\r\n\r\n const existingValues = new Set(existingItems.map((item) => item.value))\r\n\r\n const mergedItems = [...existingItems, ...newItems.filter((item) => !existingValues.has(item.value))]\r\n\r\n if (mergedItems.length > 0) {\r\n mergedFilter[fieldKey] = mergedItems\r\n }\r\n }\r\n }\r\n\r\n const result: IFilterState<T> = {\r\n filter: Object.keys(mergedFilter).length ? mergedFilter : {},\r\n details: f2?.details ?? f1?.details\r\n }\r\n\r\n return result\r\n }\r\n\r\n addQuickSearch = (filterState: IFilterState<T>, def?: IQuickSearchDef<T>, value?: string): IFilterChange<T> => {\r\n if (!value || !def) return { isChanged: false, filterState }\r\n const clonedFilter: IFilterState<T> = { ...filterState }\r\n const tempSet = new Set<string>(clonedFilter.quickSearch?.values ?? [])\r\n const isChanged = !tempSet.has(value)\r\n tempSet.add(value)\r\n clonedFilter.quickSearch = { fields: def.fields, values: Array.from(tempSet) }\r\n return { isChanged, filterState: clonedFilter }\r\n }\r\n\r\n removeQuickSearch = (filterState: IFilterState<T>): IFilterChange<T> => {\r\n const obj = { ...filterState }\r\n if ('quickSearch' in obj) delete obj.quickSearch\r\n return { isChanged: !!filterState.quickSearch, filterState: obj }\r\n }\r\n\r\n patchFilterWithKey = (filterState: IFilterState<T>, data: IFilterItemChangeModel<T>): IFilterChange<T> => {\r\n const { field, ...item } = data\r\n const clonedFilter: IFilterModel<T> = { ...(filterState.filter || {}) }\r\n let filter = clonedFilter[field] ?? []\r\n const isChanged = !filter.map((x) => x.value).includes(item.value)\r\n if (isChanged) filter = [...filter, item]\r\n clonedFilter[field] = filter\r\n return { isChanged, filterState: { ...filterState, filter: clonedFilter } }\r\n }\r\n\r\n deleteFilterWithKey = (filterState: IFilterState<T>, data: IFilterItemChangeModel<T>): IFilterChange<T> => {\r\n const clonedFilter: IFilterModel<T> = { ...(filterState.filter || {}) }\r\n const isChanged = data.field in clonedFilter\r\n if (isChanged) delete clonedFilter[data.field]\r\n return { isChanged, filterState: { ...filterState, filter: clonedFilter } }\r\n }\r\n\r\n isFilterEmpty = (filterState: IFilterState<T>) => {\r\n const values = Object.values(filterState.filter ?? {}) as IFilterItemModel[][]\r\n return values.length < 1 || values.every((x) => !!x && x.length < 1)\r\n }\r\n //#endregion\r\n\r\n //#region Field\r\n isYoutubeLink = (val: string) => /^https?:\\/\\/(www\\.)?(youtube\\.com|youtu\\.be)\\//.test(val)\r\n\r\n isGenericLink = (val: string) => /^https?:\\/\\/[^ ]+$/.test(val)\r\n\r\n isGuid = (val: string) => /^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i.test(val)\r\n\r\n getFieldsMatches = (fields: IFilterFields<T>, keyword: string, showAll?: boolean): IFilterFields<T> => {\r\n const trimmed = keyword.trim().toLowerCase()\r\n if (!trimmed) return fields\r\n\r\n const matched: IFilterFields<T> = {}\r\n\r\n for (const key in fields) {\r\n const field = key as keyof IFilterFields<T>\r\n const config = fields[field]\r\n if (!config) continue\r\n\r\n const matches = Array.isArray(config.searchMatches) ? config.searchMatches : config.searchMatches ? [config.searchMatches] : []\r\n\r\n let visible = false\r\n\r\n for (const matchObj of matches) {\r\n switch (matchObj.rule) {\r\n case ESearchMatch.AlwaysVisible:\r\n visible = true\r\n break\r\n case ESearchMatch.MatchOnly:\r\n if (typeof matchObj.match === 'function') {\r\n if (matchObj.match(trimmed)) visible = true\r\n }\r\n break\r\n case ESearchMatch.LinkYoutube:\r\n if (this.isYoutubeLink(trimmed)) visible = true\r\n break\r\n case ESearchMatch.Link:\r\n if (this.isGenericLink(trimmed)) visible = true\r\n break\r\n case ESearchMatch.Guid:\r\n if (this.isGuid(trimmed)) visible = true\r\n break\r\n default:\r\n break\r\n }\r\n\r\n if (visible) break\r\n }\r\n\r\n if (visible) matched[field] = config\r\n }\r\n return Object.keys(matched).length === 0 ? (showAll ? fields : {}) : matched\r\n }\r\n\r\n validated = (value: string, fieldKey: keyof IFilterModel<T>, filterField?: IFilterField): { error: boolean; message?: string } => {\r\n const trimmed = value.trim().toLowerCase()\r\n if (!trimmed) return { error: true, message: `The ${fieldKey.toString()} is required ` }\r\n const validate = Array.isArray(filterField?.validate) ? filterField?.validate ?? [] : filterField?.validate ? [filterField.validate] : []\r\n const obj: { error: boolean; message?: string } = { error: false }\r\n for (const validateObj of validate) {\r\n switch (validateObj.rule) {\r\n case EFieldValidate.LinkYoutube:\r\n if (!this.isYoutubeLink(trimmed)) {\r\n obj.error = true\r\n obj.message = `The ${filterField?.label ?? fieldKey.toString()} must be a valid YouTube link`\r\n }\r\n break\r\n\r\n case EFieldValidate.Link:\r\n if (!this.isGenericLink(trimmed)) {\r\n obj.error = true\r\n obj.message = `The ${filterField?.label ?? fieldKey.toString()} must be a valid URL link`\r\n }\r\n break\r\n\r\n case EFieldValidate.Custom:\r\n if (typeof validateObj.custom === 'function' && !validateObj.custom(trimmed)) {\r\n obj.error = true\r\n obj.message = `The ${filterField?.label ?? fieldKey.toString()} is invalid`\r\n }\r\n break\r\n default:\r\n break\r\n }\r\n if (obj.error) break\r\n }\r\n return obj\r\n }\r\n //#endregion\r\n\r\n //#region Sort\r\n // getSortFields = (fields: IFilterFields<T>) => {\r\n // const keys = Object.keys(fields) as (keyof IFilterFields<T>)[]\r\n // return keys.reduce<IFilterFields<T>>((a, b) => {\r\n // const item = fields[b]\r\n // if (item?.sortable !== false) {\r\n // a[b] = item\r\n // }\r\n // return a\r\n // }, {})\r\n // }\r\n //#endregion\r\n}\r\n"],"names":["filterPanelClasses","root","list","item","FilterBarBase","_this","_classCallCheck","_len","arguments","length","args","Array","_key","_callSuper","this","concat","_defineProperty","f1","f2","_f2$filter","_f2$details","mergedFilter","filter","_loop","_mergedFilter$fieldKe","_f1$filter$fieldKey","fieldKey","key","existingItems","newItems","existingValues","Set","map","value","mergedItems","_toConsumableArray","has","Object","keys","details","filterState","def","_clonedFilter$quickSe","_clonedFilter$quickSe2","isChanged","clonedFilter","_objectSpread","tempSet","quickSearch","values","add","fields","from","obj","data","_clonedFilter$field","field","_objectWithoutProperties","_excluded","x","includes","_filterState$filter","every","val","test","keyword","showAll","trimmed","trim","toLowerCase","matched","config","_step","matches","isArray","searchMatches","visible","_iterator","_createForOfIteratorHelper","s","n","done","matchObj","rule","ESearchMatch","AlwaysVisible","MatchOnly","match","LinkYoutube","isYoutubeLink","Link","isGenericLink","Guid","isGuid","err","e","f","filterField","_filterField$validate","error","message","toString","_step2","validate","_iterator2","validateObj","EFieldValidate","_filterField$label","label","_filterField$label2","Custom","_filterField$label3","custom","_inherits","Component","_createClass"],"mappings":"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"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{inherits as e,createClass as t,objectSpread2 as r,classCallCheck as l,callSuper as a,defineProperty as i}from"../_virtual/_rollupPluginBabelHelpers.js";import{jsx as n,jsxs as o}from"react/jsx-runtime";import{styled as s,Box as f,ClickAwayListener as u,IconButton as d,InputBase as
|
|
1
|
+
import{inherits as e,createClass as t,objectSpread2 as r,classCallCheck as l,callSuper as a,defineProperty as i}from"../_virtual/_rollupPluginBabelHelpers.js";import{jsx as n,jsxs as o}from"react/jsx-runtime";import{styled as s,Box as f,ClickAwayListener as u,IconButton as d,InputBase as c}from"@mui/material";import h from"@mui/icons-material/FilterList";import{ButtonClear as p,FilterNotes as S}from"./ui.units.js";import m from"./base.js";import v from"./create.filtered.js";import g from"./create.filter-panel.js";function k(s){var k=g(s),w=v(s);return function(){function v(e){var t;return l(this,v),t=a(this,v,[e]),i(t,"defaultState",{keyword:"",panelState:{anchorEl:null}}),i(t,"filterStateStore",{filter:{}}),i(t,"setFilterState",(function(e){t.props.value||(t.filterStateStore=e),t.props.onChange&&t.props.onChange(e)})),i(t,"refFilterButton",null),i(t,"refSortButton",null),i(t,"refInput",null),i(t,"refBeforeInput",null),i(t,"renderTextField",(function(){return o(f,{component:"label",htmlFor:t.configs.id,sx:{flex:1,display:"flex",alignItems:"flex-end"},children:[n(f,{ref:function(e){return t.refBeforeInput=e},sx:{height:"100%"}}),n(c,{id:t.configs.id,placeholder:t.configs.placeholder,fullWidth:!0,autoComplete:"off",inputRef:function(e){return t.refInput=e},onChange:function(e){return t.setState({keyword:e.target.value})},value:t.state.keyword,onFocus:function(){return t.showPanel("searchInput")},onKeyDown:t.handleKeyDown})]})})),i(t,"handleKeyDown",(function(e){var r=e.keyCode;if(13===r){if(!t.state.keyword)return;var l,a=t.addQuickSearch(t.filterState,s.quickSearch,t.state.keyword);if(a.filterState.details="add",a.isChanged)null===(l=t.refInput)||void 0===l||l.blur(),t.setFilterState(a.filterState),t.setState(t.defaultState)}else if(27===r){var i;null===(i=t.refInput)||void 0===i||i.blur(),t.setState(t.defaultState)}})),i(t,"handleAdd",(function(e,r){var l,a={isChanged:!1,filterState:t.filterState};("field"===e&&r?a=t.patchFilterWithKey(t.filterState,r):"quickSearch"===e&&(a=t.addQuickSearch(t.filterState,s.quickSearch,t.state.keyword)),a.filterState.details="add",a.isChanged)&&(null===(l=t.refInput)||void 0===l||l.blur(),t.setFilterState(a.filterState),t.setState(t.defaultState))})),i(t,"handleRemove",(function(e,r){var l,a={isChanged:!1,filterState:t.filterState};("field"===e&&r?a=t.deleteFilterWithKey(t.filterState,r):"quickSearch"===e&&(a=t.removeQuickSearch(t.filterState)),a.filterState.details="remove",a.isChanged)&&(null===(l=t.refInput)||void 0===l||l.blur(),t.setFilterState(a.filterState),t.forceUpdate())})),i(t,"handleClear",(function(){t.setFilterState({filter:{},details:"remove"}),t.setState(t.defaultState)})),i(t,"showPanel",(function(e){var r=null;switch(e){case"searchInput":r=t.refBeforeInput;break;case"filterButton":r=t.refFilterButton}t.setState({panelState:{anchorEl:r,reason:e}})})),i(t,"closePanel",(function(){return t.setState({panelState:{anchorEl:null}})})),t.state=t.defaultState,t}return e(v,m),t(v,[{key:"filterState",get:function(){var e;return null!==(e=this.props.value)&&void 0!==e?e:this.filterStateStore}},{key:"configs",get:function(){var e,t,r,l;return{id:null!==(e=null!==(t=this.props.id)&&void 0!==t?t:s.id)&&void 0!==e?e:(new Date).getTime().toString(),placeholder:null!==(r=null!==(l=this.props.placeholder)&&void 0!==l?l:s.placeholder)&&void 0!==r?r:"Filter",notes:s.notes}}},{key:"render",value:function(){var e=this;return n(u,{onClickAway:this.closePanel,children:o(y,{children:[n(d,{ref:function(t){return e.refFilterButton=t},onClick:function(){return e.showPanel("filterButton")},children:n(h,{})}),o(C,{children:[n(w,{filterState:this.filterState,onRemove:this.handleRemove}),this.renderTextField()]}),n(p,{visibled:!this.isFilterEmpty(this.filterState),onClick:this.handleClear}),n(S,r({},this.configs.notes)),n(k,r(r({},this.state.panelState),{},{keyword:this.state.keyword,onSubmit:this.handleAdd,onClose:this.closePanel}))]})})}}])}()}var y=s(f)({display:"flex",gap:"8px",width:"100%",borderRadius:"6px",transition:"all linear 0.2s",padding:"2px",backgroundColor:"#fafafa","&:hover":{backgroundColor:"#ededed"}}),C=s(f)({flex:1,minHeight:"40px",display:"flex",flexWrap:"wrap",alignItems:"center",gap:"6px"});export{k as default};
|
|
2
2
|
//# sourceMappingURL=create.filter-bar.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"create.filter-bar.js","sources":["../../src/filter-bar/create.filter-bar.tsx"],"sourcesContent":["import React from 'react'\r\nimport { Box, ClickAwayListener, IconButton, InputBase, styled } from '@mui/material'\r\nimport FilterListIcon from '@mui/icons-material/FilterList'\r\nimport { ButtonClear, FilterHelpNotes, IFilterHelpNotesProps } from './ui.units'\r\nimport { IFilterFields, IFilterItemModel, IFilterModel, FilterReason, IFilterState } from './types'\r\nimport CreateFilterPanel, { FilterPanelState } from './create.filter-panel'\r\nimport FilterBarBase from './base'\r\nimport CreateFiltered from './create.filtered'\r\n\r\nexport interface IFilterBarParams<T> {\r\n fields: IFilterFields<T>\r\n id?: string\r\n placeholder?: string\r\n helpNotes?: IFilterHelpNotesProps\r\n}\r\n\r\nexport interface IFilterBarProps<T> {\r\n id?: string\r\n placeholder?: string\r\n value?: IFilterState<T>\r\n onChange?: (value: IFilterState<T>) => void\r\n}\r\n\r\nexport interface IFilterBarState {\r\n panelState: FilterPanelState\r\n keyword: string\r\n}\r\n\r\nfunction CreateFilterBar<T>(params: IFilterBarParams<T>) {\r\n const FilterPanelInstance = CreateFilterPanel<T>({ fields: params.fields })\r\n const FilteredInstance = CreateFiltered<T>()\r\n\r\n class FilterBar extends FilterBarBase<IFilterBarProps<T>, IFilterBarState, T> {\r\n defaultState: IFilterBarState = { keyword: '', panelState: { anchorEl: null } }\r\n constructor(props: IFilterBarProps<T>) {\r\n super(props)\r\n this.state = this.defaultState\r\n }\r\n\r\n filterStateStore: IFilterState<T> = { filter: {} }\r\n get filterState(): IFilterState<T> {\r\n return this.props.value ?? this.filterStateStore\r\n }\r\n\r\n setFilterState = (filterState: IFilterState<T>) => {\r\n if (!this.props.value) {\r\n this.filterStateStore = filterState\r\n }\r\n this.props.onChange && this.props.onChange(filterState)\r\n }\r\n\r\n get configs() {\r\n return {\r\n id: this.props.id ?? params.id ?? new Date().getTime().toString(),\r\n placeholder: this.props.placeholder ?? params.placeholder ?? 'Filter',\r\n helpNotes: params.helpNotes\r\n }\r\n }\r\n\r\n refFilterButton: HTMLButtonElement | null = null\r\n refSortButton: HTMLButtonElement | null = null\r\n render() {\r\n return (\r\n <ClickAwayListener onClickAway={this.closePanel}>\r\n <Wrapper>\r\n <IconButton ref={(ref) => (this.refFilterButton = ref)} onClick={() => this.showPanel('filterButton')}>\r\n <FilterListIcon />\r\n </IconButton>\r\n <Content>\r\n <FilteredInstance fields={params.fields} filterState={this.filterState} onRemove={this.handleRemove} />\r\n {this.renderTextField()}\r\n </Content>\r\n <ButtonClear visibled={!this.isFilterEmpty(this.filterState)} onClick={this.handleClear} />\r\n {/* <IconButton ref={(ref) => (this.refSortButton = ref)} onClick={() => this.showPanel('sortButton')}>\r\n <SwapVertIcon />\r\n </IconButton> */}\r\n <FilterHelpNotes {...this.configs.helpNotes} />\r\n <FilterPanelInstance {...this.state.panelState} keyword={this.state.keyword} onSubmit={this.handleAdd} onClose={this.closePanel} />\r\n </Wrapper>\r\n </ClickAwayListener>\r\n )\r\n }\r\n\r\n refInput: HTMLInputElement | null = null\r\n refBeforeInput: HTMLElement | null = null\r\n renderTextField = () => (\r\n <Box component='label' htmlFor={this.configs.id} sx={{ flex: 1, display: 'flex', alignItems: 'flex-end' }}>\r\n <Box ref={(ref: HTMLElement) => (this.refBeforeInput = ref)} sx={{ height: '100%' }} />\r\n <InputBase\r\n id={this.configs.id}\r\n placeholder={this.configs.placeholder}\r\n fullWidth\r\n autoComplete='off'\r\n inputRef={(ref: HTMLInputElement) => (this.refInput = ref)}\r\n onChange={(event) => this.setState({ keyword: event.target.value })}\r\n value={this.state.keyword}\r\n onFocus={() => this.showPanel('searchInput')}\r\n onKeyDown={this.handleKeyDown}\r\n />\r\n </Box>\r\n )\r\n\r\n handleKeyDown = (event: React.KeyboardEvent<HTMLInputElement | HTMLTextAreaElement>) => {\r\n const keyCode: number = event.keyCode\r\n if (keyCode === 13) {\r\n if (!this.state.keyword) return\r\n const temp = this.patchFilterWithKey(this.filterState, 'Search', { value: this.state.keyword })\r\n temp.filterState.details = 'add'\r\n if (!!temp.isChanged) {\r\n this.refInput?.blur()\r\n this.setFilterState(temp.filterState)\r\n this.setState(this.defaultState)\r\n }\r\n } else if (keyCode === 27) {\r\n this.refInput?.blur()\r\n this.setState(this.defaultState)\r\n }\r\n }\r\n\r\n handleAdd = (key: keyof IFilterModel<T>, value: IFilterItemModel) => {\r\n const temp = this.patchFilterWithKey(this.filterState, key, value)\r\n temp.filterState.details = 'add'\r\n if (!!temp.isChanged) {\r\n this.refInput?.blur()\r\n this.setFilterState(temp.filterState)\r\n this.setState(this.defaultState)\r\n }\r\n }\r\n\r\n handleRemove = (key: keyof IFilterModel<T>) => {\r\n const temp = this.deleteFilterWithKey(this.filterState, key)\r\n temp.filterState.details = 'remove'\r\n if (!!temp.isChanged) {\r\n this.refInput?.blur()\r\n this.setFilterState(temp.filterState)\r\n this.forceUpdate()\r\n }\r\n }\r\n\r\n handleClear = () => {\r\n this.setFilterState({ filter: {}, details: 'remove' })\r\n this.setState(this.defaultState)\r\n }\r\n\r\n showPanel = (reason: FilterReason) => {\r\n let anchorEl = null\r\n switch (reason) {\r\n case 'searchInput':\r\n anchorEl = this.refBeforeInput\r\n break\r\n case 'filterButton':\r\n anchorEl = this.refFilterButton\r\n break\r\n case 'sortButton':\r\n anchorEl = this.refSortButton\r\n break\r\n default:\r\n break\r\n }\r\n this.setState({ panelState: { anchorEl, reason } })\r\n }\r\n\r\n closePanel = () => this.setState({ panelState: { anchorEl: null } })\r\n }\r\n\r\n return FilterBar\r\n}\r\n\r\nexport default CreateFilterBar\r\n\r\nconst Wrapper = styled(Box)({\r\n display: 'flex',\r\n gap: '8px',\r\n width: '100%',\r\n borderRadius: '6px',\r\n transition: 'all linear 0.2s',\r\n padding: '2px',\r\n backgroundColor: '#fafafa',\r\n '&:hover': { backgroundColor: '#ededed' }\r\n})\r\n\r\nconst Content = styled(Box)({\r\n flex: 1,\r\n minHeight: '40px',\r\n display: 'flex',\r\n flexWrap: 'wrap',\r\n alignItems: 'center',\r\n gap: '6px'\r\n})\r\n"],"names":["CreateFilterBar","params","FilterPanelInstance","CreateFilterPanel","fields","FilteredInstance","CreateFiltered","FilterBar","props","_this","_classCallCheck","_callSuper","_defineProperty","keyword","panelState","anchorEl","filter","filterState","value","filterStateStore","onChange","_jsxs","Box","component","htmlFor","configs","id","sx","flex","display","alignItems","children","_jsx","ref","refBeforeInput","height","InputBase","placeholder","fullWidth","autoComplete","inputRef","refInput","event","setState","target","state","onFocus","showPanel","onKeyDown","handleKeyDown","keyCode","_this$refInput","temp","patchFilterWithKey","details","isChanged","blur","setFilterState","defaultState","_this$refInput2","key","_this$refInput3","_this$refInput4","deleteFilterWithKey","forceUpdate","reason","refFilterButton","refSortButton","_inherits","FilterBarBase","_createClass","get","_this$props$value","this","_ref2","_this$props$id","_ref3","_this$props$placehold","Date","getTime","toString","helpNotes","_this2","ClickAwayListener","onClickAway","closePanel","Wrapper","IconButton","onClick","FilterListIcon","Content","onRemove","handleRemove","renderTextField","ButtonClear","visibled","isFilterEmpty","handleClear","FilterHelpNotes","_objectSpread","onSubmit","handleAdd","onClose","styled","gap","width","borderRadius","transition","padding","backgroundColor","minHeight","flexWrap"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"create.filter-bar.js","sources":["../../src/filter-bar/create.filter-bar.tsx"],"sourcesContent":["import React, { ComponentType } from 'react'\r\nimport { Box, ClickAwayListener, IconButton, InputBase, styled } from '@mui/material'\r\nimport FilterListIcon from '@mui/icons-material/FilterList'\r\nimport { ButtonClear, FilterNotes } from './ui.units'\r\nimport { IFilterReason, IFilterState, IFilterBarParams, IFilterBarProps, IFilterBarState, IFilterSubmitFunc } from './types'\r\nimport FilterBarBase, { IFilterChange } from './base'\r\nimport CreateFiltered from './create.filtered'\r\nimport CreateFilterPanel from './create.filter-panel'\r\n\r\nfunction CreateFilterBar<T>(params: IFilterBarParams<T>): ComponentType<IFilterBarProps<T>> {\r\n const FilterPanelInstance = CreateFilterPanel<T>(params)\r\n const FilteredInstance = CreateFiltered<T>(params)\r\n\r\n class FilterBar extends FilterBarBase<IFilterBarProps<T>, IFilterBarState, T> {\r\n defaultState: IFilterBarState = { keyword: '', panelState: { anchorEl: null } }\r\n constructor(props: IFilterBarProps<T>) {\r\n super(props)\r\n this.state = this.defaultState\r\n }\r\n\r\n filterStateStore: IFilterState<T> = { filter: {} }\r\n get filterState(): IFilterState<T> {\r\n return this.props.value ?? this.filterStateStore\r\n }\r\n\r\n setFilterState = (filterState: IFilterState<T>) => {\r\n if (!this.props.value) {\r\n this.filterStateStore = filterState\r\n }\r\n this.props.onChange && this.props.onChange(filterState)\r\n }\r\n\r\n get configs() {\r\n return {\r\n id: this.props.id ?? params.id ?? new Date().getTime().toString(),\r\n placeholder: this.props.placeholder ?? params.placeholder ?? 'Filter',\r\n notes: params.notes\r\n }\r\n }\r\n\r\n refFilterButton: HTMLButtonElement | null = null\r\n refSortButton: HTMLButtonElement | null = null\r\n render() {\r\n return (\r\n <ClickAwayListener onClickAway={this.closePanel}>\r\n <Wrapper>\r\n <IconButton ref={(ref) => (this.refFilterButton = ref)} onClick={() => this.showPanel('filterButton')}>\r\n <FilterListIcon />\r\n </IconButton>\r\n <Content>\r\n <FilteredInstance filterState={this.filterState} onRemove={this.handleRemove} />\r\n {this.renderTextField()}\r\n </Content>\r\n <ButtonClear visibled={!this.isFilterEmpty(this.filterState)} onClick={this.handleClear} />\r\n {/* <IconButton ref={(ref) => (this.refSortButton = ref)} onClick={() => this.showPanel('sortButton')}>\r\n <SwapVertIcon />\r\n </IconButton> */}\r\n <FilterNotes {...this.configs.notes} />\r\n <FilterPanelInstance {...this.state.panelState} keyword={this.state.keyword} onSubmit={this.handleAdd} onClose={this.closePanel} />\r\n </Wrapper>\r\n </ClickAwayListener>\r\n )\r\n }\r\n\r\n refInput: HTMLInputElement | null = null\r\n refBeforeInput: HTMLElement | null = null\r\n renderTextField = () => (\r\n <Box component='label' htmlFor={this.configs.id} sx={{ flex: 1, display: 'flex', alignItems: 'flex-end' }}>\r\n <Box ref={(ref: HTMLElement) => (this.refBeforeInput = ref)} sx={{ height: '100%' }} />\r\n <InputBase\r\n id={this.configs.id}\r\n placeholder={this.configs.placeholder}\r\n fullWidth\r\n autoComplete='off'\r\n inputRef={(ref: HTMLInputElement) => (this.refInput = ref)}\r\n onChange={(event) => this.setState({ keyword: event.target.value })}\r\n value={this.state.keyword}\r\n onFocus={() => this.showPanel('searchInput')}\r\n onKeyDown={this.handleKeyDown}\r\n />\r\n </Box>\r\n )\r\n\r\n handleKeyDown = (event: React.KeyboardEvent<HTMLInputElement | HTMLTextAreaElement>) => {\r\n const keyCode: number = event.keyCode\r\n if (keyCode === 13) {\r\n if (!this.state.keyword) return\r\n const temp = this.addQuickSearch(this.filterState, params.quickSearch, this.state.keyword)\r\n temp.filterState.details = 'add'\r\n if (!!temp.isChanged) {\r\n this.refInput?.blur()\r\n this.setFilterState(temp.filterState)\r\n this.setState(this.defaultState)\r\n }\r\n } else if (keyCode === 27) {\r\n this.refInput?.blur()\r\n this.setState(this.defaultState)\r\n }\r\n }\r\n\r\n handleAdd: IFilterSubmitFunc<T> = (mode, data) => {\r\n let temp: IFilterChange<T> = { isChanged: false, filterState: this.filterState }\r\n if (mode === 'field' && !!data) {\r\n temp = this.patchFilterWithKey(this.filterState, data)\r\n } else if (mode === 'quickSearch') {\r\n temp = this.addQuickSearch(this.filterState, params.quickSearch, this.state.keyword)\r\n }\r\n temp.filterState.details = 'add'\r\n if (!!temp.isChanged) {\r\n this.refInput?.blur()\r\n this.setFilterState(temp.filterState)\r\n this.setState(this.defaultState)\r\n }\r\n }\r\n\r\n handleRemove: IFilterSubmitFunc<T> = (mode, data) => {\r\n let temp: IFilterChange<T> = { isChanged: false, filterState: this.filterState }\r\n if (mode === 'field' && !!data) {\r\n temp = this.deleteFilterWithKey(this.filterState, data)\r\n } else if (mode === 'quickSearch') {\r\n temp = this.removeQuickSearch(this.filterState)\r\n }\r\n temp.filterState.details = 'remove'\r\n if (!!temp.isChanged) {\r\n this.refInput?.blur()\r\n this.setFilterState(temp.filterState)\r\n this.forceUpdate()\r\n }\r\n }\r\n\r\n handleClear = () => {\r\n this.setFilterState({ filter: {}, details: 'remove' })\r\n this.setState(this.defaultState)\r\n }\r\n\r\n showPanel = (reason: IFilterReason) => {\r\n let anchorEl = null\r\n switch (reason) {\r\n case 'searchInput':\r\n anchorEl = this.refBeforeInput\r\n break\r\n case 'filterButton':\r\n anchorEl = this.refFilterButton\r\n break\r\n // case 'sortButton':\r\n // anchorEl = this.refSortButton\r\n // break\r\n default:\r\n break\r\n }\r\n this.setState({ panelState: { anchorEl, reason } })\r\n }\r\n\r\n closePanel = () => this.setState({ panelState: { anchorEl: null } })\r\n }\r\n\r\n return FilterBar\r\n}\r\n\r\nexport default CreateFilterBar\r\n\r\nconst Wrapper = styled(Box)({\r\n display: 'flex',\r\n gap: '8px',\r\n width: '100%',\r\n borderRadius: '6px',\r\n transition: 'all linear 0.2s',\r\n padding: '2px',\r\n backgroundColor: '#fafafa',\r\n '&:hover': { backgroundColor: '#ededed' }\r\n})\r\n\r\nconst Content = styled(Box)({\r\n flex: 1,\r\n minHeight: '40px',\r\n display: 'flex',\r\n flexWrap: 'wrap',\r\n alignItems: 'center',\r\n gap: '6px'\r\n})\r\n"],"names":["CreateFilterBar","params","FilterPanelInstance","CreateFilterPanel","FilteredInstance","CreateFiltered","FilterBar","props","_this","_classCallCheck","_callSuper","_defineProperty","keyword","panelState","anchorEl","filter","filterState","value","filterStateStore","onChange","_jsxs","Box","component","htmlFor","configs","id","sx","flex","display","alignItems","children","_jsx","ref","refBeforeInput","height","InputBase","placeholder","fullWidth","autoComplete","inputRef","refInput","event","setState","target","state","onFocus","showPanel","onKeyDown","handleKeyDown","keyCode","_this$refInput","temp","addQuickSearch","quickSearch","details","isChanged","blur","setFilterState","defaultState","_this$refInput2","mode","data","_this$refInput3","patchFilterWithKey","_this$refInput4","deleteFilterWithKey","removeQuickSearch","forceUpdate","reason","refFilterButton","_inherits","FilterBarBase","_createClass","key","get","_this$props$value","this","_ref2","_this$props$id","_ref3","_this$props$placehold","Date","getTime","toString","notes","_this2","ClickAwayListener","onClickAway","closePanel","Wrapper","IconButton","onClick","FilterListIcon","Content","onRemove","handleRemove","renderTextField","ButtonClear","visibled","isFilterEmpty","handleClear","FilterNotes","_objectSpread","onSubmit","handleAdd","onClose","styled","gap","width","borderRadius","transition","padding","backgroundColor","minHeight","flexWrap"],"mappings":"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"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{inherits as e,createClass as r,classCallCheck as t,callSuper as
|
|
1
|
+
import{inherits as e,createClass as r,classCallCheck as t,callSuper as i,defineProperty as o}from"../_virtual/_rollupPluginBabelHelpers.js";import{jsx as n,jsxs as l}from"react/jsx-runtime";import{Fragment as a}from"react";import{styled as s,Box as d,RadioGroup as u,MenuList as c,MenuItem as m,Typography as f,Divider as p,Button as v,TextField as h,FormControlLabel as g,Radio as b}from"@mui/material";import S,{filterPanelClasses as x}from"./base.js";import"../form/validator.js";import"../form/dino-form.js";import{convertFormDataToJson as y}from"../form/helpers.js";function C(s){return function(){function u(e){var r;return t(this,u),r=i(this,u,[e]),o(r,"renderFrom",(function(e){var t,i=s.fields[e],o=null!==(t=null==i?void 0:i.label)&&void 0!==t?t:e.toString();return n("form",{onSubmit:function(t){return r.handleSubmit(e,t)},children:l(j,{children:[n(d,{className:"top-bar",children:n(f,{variant:"subtitle2",children:o})}),n(d,{className:"content",children:r.renderWithMode(e)}),"select"===(null==i?void 0:i.type)&&n(p,{variant:"middle"}),l(d,{className:"actions",children:[n(v,{size:"small",color:"inherit",onClick:r.props.onCancel,children:"Cancel"}),n(v,{size:"small",color:"primary",type:"submit",sx:{fontWeight:700},children:"Apply"})]})]})})})),o(r,"renderWithMode",(function(e){var t=s.fields[e],i=r.state.messageError;return"select"===(null==t?void 0:t.type)?n(k,{name:e.toString(),className:i?"error":"",onChange:function(){return r.setState({messageError:void 0})},children:t.options.map((function(e,r){var t;return n(g,{value:e.value,control:n(b,{}),label:null!==(t=e.label)&&void 0!==t?t:e.value},e.value.toString()+r)}))}):n(h,{autoFocus:!0,name:e.toString(),size:"small",error:!!i,helperText:i})})),o(r,"handleSubmit",(function(e,t){var i;t.preventDefault(),t.stopPropagation();var o=new FormData(t.currentTarget),n=null===(i=y(o)[e])||void 0===i?void 0:i.toString(),l=s.fields[e],a=r.validated(null!=n?n:"",e,l);if(a.error)r.setState({messageError:a.message});else{var d,u=void 0;if("select"===(null==l?void 0:l.type))u=null===(d=l.options.find((function(e){return e.value===n})))||void 0===d?void 0:d.label;r.props.onSubmit&&r.props.onSubmit("field",{field:e,value:n,label:u})}})),r.state={fieldSelected:null},r}return e(u,S),r(u,[{key:"render",value:function(){var e=this,r=this.state.fieldSelected;if(r)return this.renderFrom(r);var t=Object.keys(s.fields).filter((function(e){return!!e&&"Search"!==e}));return n(c,{className:x.list,sx:{minWidth:"200px"},children:t.map((function(r,t){var i,o=s.fields[r];return o?n(m,{className:x.item,onClick:function(){return e.setState({fieldSelected:r,messageError:void 0})},children:null!==(i=null==o?void 0:o.label)&&void 0!==i?i:r.toString()},r.toString()+t):n(a,{},r.toString()+t)}))})}}])}()}var j=s(d)({minWidth:"200px",borderRadius:"4px",overflow:"hidden",".top-bar":{background:"#000",padding:"8px",".MuiTypography-root":{color:"#fff"}},".content":{padding:"8px"},".actions":{display:"flex",alignItems:"center",justifyContent:"flex-end",padding:"8px"}}),k=s(u)({marginLeft:"-8px",marginRight:"-8px","&.error .MuiRadio-root":{color:"#d32f2f"},".MuiFormControlLabel-root":{margin:0},".MuiFormControlLabel-root:hover":{backgroundColor:"rgba(25, 118, 210, 0.04)"}});export{C as default};
|
|
2
2
|
//# sourceMappingURL=create.filter-menu.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"create.filter-menu.js","sources":["../../src/filter-bar/create.filter-menu.tsx"],"sourcesContent":["import React, { Fragment } from 'react'\r\nimport { Box, Button, ButtonProps, Divider } from '@mui/material'\r\nimport { FormControlLabel, MenuItem, MenuList, Radio, RadioGroup, styled, TextField, Typography } from '@mui/material'\r\nimport FilterBarBase, { filterPanelClasses } from './base'\r\nimport {
|
|
1
|
+
{"version":3,"file":"create.filter-menu.js","sources":["../../src/filter-bar/create.filter-menu.tsx"],"sourcesContent":["import React, { ComponentType, Fragment } from 'react'\r\nimport { Box, Button, ButtonProps, Divider } from '@mui/material'\r\nimport { FormControlLabel, MenuItem, MenuList, Radio, RadioGroup, styled, TextField, Typography } from '@mui/material'\r\nimport FilterBarBase, { filterPanelClasses } from './base'\r\nimport { IFilterBarParams, IFilterModel, IFilterSubmitFunc } from './types'\r\nimport { convertFormDataToJson } from '../form'\r\n\r\nexport interface IFilterMenuProps<T> {\r\n onSubmit?: IFilterSubmitFunc<T>\r\n onCancel?: ButtonProps['onClick']\r\n}\r\n\r\nexport interface IFilterMenuState<T> {\r\n fieldSelected: keyof IFilterModel<T> | null\r\n messageError?: string\r\n}\r\n\r\nfunction CreateFilterMenu<T>(params: IFilterBarParams<T>): ComponentType<IFilterMenuProps<T>> {\r\n class FilterMenu extends FilterBarBase<IFilterMenuProps<T>, IFilterMenuState<T>, T> {\r\n constructor(props: IFilterMenuProps<T>) {\r\n super(props)\r\n this.state = { fieldSelected: null }\r\n }\r\n\r\n render() {\r\n const { fieldSelected } = this.state\r\n if (!!fieldSelected) return this.renderFrom(fieldSelected)\r\n const keys = (Object.keys(params.fields) as (keyof IFilterModel<T>)[]).filter((x) => !!x && x !== 'Search')\r\n return (\r\n <MenuList className={filterPanelClasses.list} sx={{ minWidth: '200px' }}>\r\n {keys.map((x, i) => {\r\n const item = params.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={filterPanelClasses.item}\r\n onClick={() => this.setState({ fieldSelected: x, messageError: undefined })}\r\n >\r\n {item?.label ?? x.toString()}\r\n </MenuItem>\r\n )\r\n })}\r\n </MenuList>\r\n )\r\n }\r\n\r\n renderFrom = (fieldSelected: keyof IFilterModel<T>) => {\r\n const fieldConfig = params.fields[fieldSelected]\r\n const label = fieldConfig?.label ?? fieldSelected.toString()\r\n return (\r\n <form onSubmit={(e) => this.handleSubmit(fieldSelected, e)}>\r\n <WrapPanelFilterMode>\r\n <Box className='top-bar'>\r\n <Typography variant='subtitle2'>{label}</Typography>\r\n </Box>\r\n <Box className='content'>{this.renderWithMode(fieldSelected)}</Box>\r\n {fieldConfig?.type === 'select' && <Divider variant='middle' />}\r\n <Box className='actions'>\r\n <Button size='small' color='inherit' onClick={this.props.onCancel}>\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 </Box>\r\n </WrapPanelFilterMode>\r\n </form>\r\n )\r\n }\r\n\r\n renderWithMode = (fieldSelected: keyof IFilterModel<T>) => {\r\n const fieldConfig = params.fields[fieldSelected]\r\n const { messageError } = this.state\r\n switch (fieldConfig?.type) {\r\n case 'select':\r\n return (\r\n <CustomRadioGroup\r\n name={fieldSelected.toString()}\r\n className={messageError ? 'error' : ''}\r\n onChange={() => this.setState({ messageError: undefined })}\r\n >\r\n {fieldConfig.options.map((x, i) => (\r\n <FormControlLabel key={x.value.toString() + i} value={x.value} control={<Radio />} label={x.label ?? x.value} />\r\n ))}\r\n </CustomRadioGroup>\r\n )\r\n case 'string':\r\n default:\r\n return <TextField autoFocus name={fieldSelected.toString()} size='small' error={!!messageError} helperText={messageError} />\r\n }\r\n }\r\n\r\n handleSubmit = (fieldSelected: keyof IFilterModel<T>, event: React.FormEvent<HTMLFormElement>) => {\r\n event.preventDefault()\r\n event.stopPropagation()\r\n const formData = new FormData(event.currentTarget as HTMLFormElement)\r\n const obj = convertFormDataToJson<T>(formData)\r\n const value = obj[fieldSelected as keyof T]?.toString()\r\n\r\n const fieldConfig = params.fields[fieldSelected]\r\n const validate = this.validated(value ?? '', fieldSelected, fieldConfig)\r\n if (validate.error) {\r\n this.setState({ messageError: validate.message })\r\n return\r\n }\r\n\r\n let label: string | undefined = undefined\r\n if (fieldConfig?.type === 'select') {\r\n label = fieldConfig.options.find((x) => x.value === value)?.label\r\n }\r\n\r\n this.props.onSubmit && this.props.onSubmit('field', { field: fieldSelected, value, label })\r\n }\r\n }\r\n\r\n return FilterMenu\r\n}\r\n\r\nexport default CreateFilterMenu\r\n\r\nconst WrapPanelFilterMode = styled(Box)({\r\n minWidth: '200px',\r\n borderRadius: '4px',\r\n overflow: 'hidden',\r\n '.top-bar': {\r\n background: '#000',\r\n padding: '8px',\r\n '.MuiTypography-root': {\r\n color: '#fff'\r\n }\r\n },\r\n '.content': {\r\n padding: '8px'\r\n },\r\n '.actions': {\r\n display: 'flex',\r\n alignItems: 'center',\r\n justifyContent: 'flex-end',\r\n padding: '8px'\r\n }\r\n})\r\n\r\nconst CustomRadioGroup = styled(RadioGroup)({\r\n marginLeft: '-8px',\r\n marginRight: '-8px',\r\n '&.error .MuiRadio-root': {\r\n color: '#d32f2f'\r\n },\r\n '.MuiFormControlLabel-root': {\r\n margin: 0\r\n },\r\n '.MuiFormControlLabel-root:hover': {\r\n backgroundColor: 'rgba(25, 118, 210, 0.04)'\r\n }\r\n})\r\n"],"names":["CreateFilterMenu","params","FilterMenu","props","_this","_classCallCheck","_callSuper","_defineProperty","fieldSelected","_fieldConfig$label","fieldConfig","fields","label","toString","_jsx","onSubmit","e","handleSubmit","children","_jsxs","WrapPanelFilterMode","Box","className","Typography","variant","renderWithMode","type","Divider","Button","size","color","onClick","onCancel","sx","fontWeight","messageError","state","CustomRadioGroup","name","onChange","setState","undefined","options","map","x","i","_x$label","FormControlLabel","value","control","Radio","TextField","autoFocus","error","helperText","event","_obj$fieldSelected","preventDefault","stopPropagation","formData","FormData","currentTarget","convertFormDataToJson","validate","validated","message","_fieldConfig$options$","find","field","_inherits","FilterBarBase","_createClass","key","_this2","this","renderFrom","keys","Object","filter","MenuList","filterPanelClasses","list","minWidth","_item$label","item","MenuItem","Fragment","styled","borderRadius","overflow","background","padding","display","alignItems","justifyContent","RadioGroup","marginLeft","marginRight","margin","backgroundColor"],"mappings":"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"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{inherits as r,createClass as e,objectSpread2 as n,classCallCheck as o,callSuper as t,defineProperty as
|
|
1
|
+
import{inherits as r,createClass as e,objectSpread2 as n,classCallCheck as o,callSuper as t,defineProperty as i}from"../_virtual/_rollupPluginBabelHelpers.js";import{jsx as a,Fragment as s,jsxs as c}from"react/jsx-runtime";import{styled as l,Box as p,Popper as u,Fade as d,MenuList as h,MenuItem as f,Typography as m}from"@mui/material";import{FilterNotes as b}from"./ui.units.js";import k,{filterPanelClasses as S}from"./base.js";import v from"./create.filter-menu.js";function x(l){var p=v(l),x=function(){function v(){var r;o(this,v);for(var e=arguments.length,u=new Array(e),d=0;d<e;d++)u[d]=arguments[d];return r=t(this,v,[].concat(u)),i(r,"renderContent",(function(){switch(r.props.reason){case"searchInput":return r.renderSearchInput();case"filterButton":return a(p,{onCancel:r.props.onClose,onSubmit:function(e,n){r.props.onSubmit&&r.props.onSubmit(e,n),r.props.onClose&&r.props.onClose()}})}})),i(r,"renderSearchInput",(function(){var e;if("searchInput"!==r.props.reason)return a(s,{});var o=r.getFieldsMatches(l.fields,null!==(e=r.props.keyword)&&void 0!==e?e:""),t=Object.keys(o).filter((function(r){return!!r}));return c(h,{className:S.list,children:[t.map((function(e,o){var t,i=l.fields[e],s=null!==(t=null==i?void 0:i.label)&&void 0!==t?t:e.toString();return c(f,{className:S.item,onClick:function(){return r.handleClick(e)},children:[c(m,{variant:"body2",component:"span",sx:{flex:1},children:[s,' "',r.props.keyword,'"']}),(null==i?void 0:i.notes)&&a(b,n({title:"The ".concat(s," includes"),disabledSize:!0},i.notes))]},e.toString()+o)})),r.renderQuickSearch()]})})),i(r,"renderQuickSearch",(function(){var e;if(!l.quickSearch)return a(s,{});var o=l.quickSearch,t=null!==(e=o.label)&&void 0!==e?e:"Quick search";return c(f,{className:S.item,onClick:r.handleQuickSearchClick,children:[c(m,{variant:"body2",component:"span",sx:{flex:1},children:[t,' "',r.props.keyword,'"']}),o.notes&&a(b,n({title:"The ".concat(t.toLocaleLowerCase()," includes"),disabledSize:!0},o.notes))]})})),i(r,"handleClick",(function(e){r.props.onSubmit&&r.props.onSubmit("field",{field:e,value:r.props.keyword})})),i(r,"handleQuickSearchClick",(function(){r.props.onSubmit&&r.props.onSubmit("quickSearch")})),r}return r(v,k),e(v,[{key:"render",value:function(){var r=this,e=Boolean(this.props.anchorEl)&&(!!this.props.keyword||"searchInput"!==this.props.reason);return a(u,{anchorEl:this.props.anchorEl,open:e,placement:"bottom-start",transition:!0,sx:{zIndex:1350},children:function(e){var o=e.TransitionProps;return a(d,n(n({},o),{},{timeout:0,children:a(C,{className:S.root,children:r.renderContent()})}))}})}}])}();return x}var C=l(p)({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{x as default};
|
|
2
2
|
//# sourceMappingURL=create.filter-panel.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"create.filter-panel.js","sources":["../../src/filter-bar/create.filter-panel.tsx"],"sourcesContent":["import React, { PropsWithChildren } from 'react'\r\nimport { Popper, Fade, Box, styled, MenuList, MenuItem, Typography } from '@mui/material'\r\nimport { IFilterModel,
|
|
1
|
+
{"version":3,"file":"create.filter-panel.js","sources":["../../src/filter-bar/create.filter-panel.tsx"],"sourcesContent":["import React, { ComponentType, PropsWithChildren } from 'react'\r\nimport { Popper, Fade, Box, styled, MenuList, MenuItem, Typography } from '@mui/material'\r\nimport { FilterNotes } from './ui.units'\r\nimport { IFilterModel, IFilterReason, IFilterSubmitFunc, IFilterBarParams } from './types'\r\nimport FilterBarBase, { filterPanelClasses } from './base'\r\nimport CreateFilterMenu from './create.filter-menu'\r\n\r\nexport interface IFilterPanelState {\r\n anchorEl: HTMLElement | null\r\n reason?: IFilterReason\r\n}\r\n\r\ninterface IFilterPanelProps<T> extends IFilterPanelState, PropsWithChildren {\r\n keyword?: string\r\n onSubmit?: IFilterSubmitFunc<T>\r\n onClose?: () => void\r\n}\r\n\r\nfunction CreateFilterPanel<T>(params: IFilterBarParams<T>): ComponentType<IFilterPanelProps<T>> {\r\n const FilterMenuInstance = CreateFilterMenu<T>(params)\r\n // const SortMenuInstance = CreateFilterSort<T>(params)\r\n\r\n class FilterPanel extends FilterBarBase<IFilterPanelProps<T>, {}, T> {\r\n render() {\r\n const isOpen = Boolean(this.props.anchorEl) && (!!this.props.keyword || this.props.reason !== 'searchInput')\r\n return (\r\n <Popper anchorEl={this.props.anchorEl} open={isOpen} placement='bottom-start' transition sx={{ zIndex: 1350 }}>\r\n {({ TransitionProps }) => (\r\n <Fade {...TransitionProps} timeout={0}>\r\n <Wrapper className={filterPanelClasses.root}>{this.renderContent()}</Wrapper>\r\n </Fade>\r\n )}\r\n </Popper>\r\n )\r\n }\r\n\r\n renderContent = () => {\r\n switch (this.props.reason) {\r\n case 'searchInput':\r\n return this.renderSearchInput()\r\n case 'filterButton':\r\n return (\r\n <FilterMenuInstance\r\n onCancel={this.props.onClose}\r\n onSubmit={(f, v) => {\r\n this.props.onSubmit && this.props.onSubmit(f, v)\r\n this.props.onClose && this.props.onClose()\r\n }}\r\n />\r\n )\r\n // case 'sortButton':\r\n // return <SortMenuInstance />\r\n default:\r\n break\r\n }\r\n }\r\n\r\n renderSearchInput = () => {\r\n if (this.props.reason !== 'searchInput') return <></>\r\n const fields = this.getFieldsMatches(params.fields, this.props.keyword ?? '')\r\n const keys = Object.keys(fields).filter((x) => !!x) as (keyof IFilterModel<T>)[]\r\n return (\r\n <MenuList className={filterPanelClasses.list}>\r\n {keys.map((x, i) => {\r\n const item = params.fields[x]\r\n const label = item?.label ?? x.toString()\r\n return (\r\n <MenuItem key={x.toString() + i} className={filterPanelClasses.item} onClick={() => this.handleClick(x)}>\r\n <Typography variant='body2' component='span' sx={{ flex: 1 }}>\r\n {label} \"{this.props.keyword}\"\r\n </Typography>\r\n {item?.notes && <FilterNotes title={`The ${label} includes`} disabledSize {...item.notes} />}\r\n </MenuItem>\r\n )\r\n })}\r\n {this.renderQuickSearch()}\r\n </MenuList>\r\n )\r\n }\r\n\r\n renderQuickSearch = () => {\r\n if (!params.quickSearch) return <></>\r\n const quickSearch = params.quickSearch\r\n const label = quickSearch.label ?? 'Quick search'\r\n return (\r\n <MenuItem className={filterPanelClasses.item} onClick={this.handleQuickSearchClick}>\r\n <Typography variant='body2' component='span' sx={{ flex: 1 }}>\r\n {label} \"{this.props.keyword}\"\r\n </Typography>\r\n {quickSearch.notes && <FilterNotes title={`The ${label.toLocaleLowerCase()} includes`} disabledSize {...quickSearch.notes} />}\r\n </MenuItem>\r\n )\r\n }\r\n\r\n handleClick = (field: keyof T) => {\r\n if (!this.props.onSubmit) return\r\n this.props.onSubmit('field', { field, value: this.props.keyword })\r\n }\r\n\r\n handleQuickSearchClick = () => {\r\n if (!this.props.onSubmit) return\r\n this.props.onSubmit('quickSearch')\r\n }\r\n }\r\n return FilterPanel\r\n}\r\n\r\nexport default CreateFilterPanel\r\n\r\nconst Wrapper = 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":["CreateFilterPanel","params","FilterMenuInstance","CreateFilterMenu","FilterPanel","_this","_classCallCheck","_len","arguments","length","args","Array","_key","_callSuper","this","concat","_defineProperty","props","reason","renderSearchInput","_jsx","onCancel","onClose","onSubmit","f","v","_this$props$keyword","fields","getFieldsMatches","keyword","keys","Object","filter","x","_jsxs","MenuList","className","filterPanelClasses","list","map","i","_item$label","item","label","toString","MenuItem","onClick","handleClick","children","Typography","variant","component","sx","flex","notes","FilterNotes","_objectSpread","title","disabledSize","renderQuickSearch","_quickSearch$label","quickSearch","handleQuickSearchClick","toLocaleLowerCase","field","value","_inherits","FilterBarBase","_createClass","key","_this2","isOpen","Boolean","anchorEl","Popper","open","placement","transition","zIndex","TransitionProps","_ref","Fade","timeout","Wrapper","root","renderContent","styled","Box","borderRadius","boxShadow","backgroundColor"],"mappings":"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"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{inherits as e,createClass as r,classCallCheck as n,callSuper as
|
|
1
|
+
import{inherits as e,createClass as r,classCallCheck as n,callSuper as i,defineProperty as l}from"../_virtual/_rollupPluginBabelHelpers.js";import{jsxs as o,Fragment as a,jsx as t}from"react/jsx-runtime";import{Component as c}from"react";import{Chip as u,Typography as s}from"@mui/material";function v(v){var p=function(){function p(){var e;n(this,p);for(var r=arguments.length,c=new Array(r),d=0;d<r;d++)c[d]=arguments[d];return e=i(this,p,[].concat(c)),l(e,"renderQuickSearch",(function(){var r,n,i;if(!e.props.filterState.quickSearch)return t(a,{});var l=null!==(r=e.props.filterState.quickSearch.values)&&void 0!==r?r:[],c=Array.isArray(l)?l:[l],p=null!==(n=null===(i=v.quickSearch)||void 0===i?void 0:i.label)&&void 0!==n?n:"Quick search";return t(u,{onDelete:e.handleQuickSearchRemove,size:"small",label:o(s,{component:"span",variant:"caption",children:[p," ",null==c?void 0:c.map((function(e){return'"'.concat(e,'"')})).join(" ")]})})})),l(e,"handleRemove",(function(r){e.props.onRemove&&e.props.onRemove("field",{field:r})})),l(e,"handleQuickSearchRemove",(function(){e.props.onRemove&&e.props.onRemove("quickSearch")})),e}return e(p,c),r(p,[{key:"render",value:function(){var e,r=this,n=Object.keys(null!==(e=this.props.filterState.filter)&&void 0!==e?e:{});return o(a,{children:[this.renderQuickSearch(),n.map((function(e,n){var i,l,a,c=null===(i=r.props.filterState.filter)||void 0===i?void 0:i[e],p=v.fields[e];return t(u,{onDelete:function(){return r.handleRemove(e)},size:"small",label:o(s,{component:"span",variant:"caption",children:[null!==(l=null!==(a=null==p?void 0:p.label)&&void 0!==a?a:null==e?void 0:e.toString())&&void 0!==l?l:"Search"," ",null==c?void 0:c.map((function(e){var r;return'"'.concat(null!==(r=e.label)&&void 0!==r?r:e.value,'"')})).join(" ")]})},"".concat(null==e?void 0:e.toString()).concat(n))}))]})}}])}();return p}export{v as default};
|
|
2
2
|
//# sourceMappingURL=create.filtered.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"create.filtered.js","sources":["../../src/filter-bar/create.filtered.tsx"],"sourcesContent":["import React, { Component } from 'react'\r\nimport { Chip, Typography } from '@mui/material'\r\nimport {
|
|
1
|
+
{"version":3,"file":"create.filtered.js","sources":["../../src/filter-bar/create.filtered.tsx"],"sourcesContent":["import React, { Component } from 'react'\r\nimport { Chip, Typography } from '@mui/material'\r\nimport { IFilterBarParams, IFilterState, IFilterSubmitFunc } from './types'\r\n\r\ninterface IProps<T> {\r\n filterState: IFilterState<T>\r\n onRemove?: IFilterSubmitFunc<T>\r\n}\r\n\r\nfunction CreateFiltered<T>(params: IFilterBarParams<T>) {\r\n class Filtered extends Component<IProps<T>> {\r\n render() {\r\n const keys = Object.keys(this.props.filterState.filter ?? {}) as (keyof T)[]\r\n return (\r\n <>\r\n {this.renderQuickSearch()}\r\n {keys.map((key, i) => {\r\n const item = this.props.filterState.filter?.[key]\r\n const config = params.fields[key]\r\n return (\r\n <Chip\r\n key={`${key?.toString()}${i}`}\r\n onDelete={() => this.handleRemove(key)}\r\n size='small'\r\n label={\r\n <Typography component='span' variant='caption'>\r\n {config?.label ?? key?.toString() ?? 'Search'} {item?.map((x) => `\"${x.label ?? x.value}\"`).join(' ')}\r\n </Typography>\r\n }\r\n />\r\n )\r\n })}\r\n </>\r\n )\r\n }\r\n\r\n renderQuickSearch = () => {\r\n if (!this.props.filterState.quickSearch) return <></>\r\n const temp = this.props.filterState.quickSearch.values ?? []\r\n const items = Array.isArray(temp) ? temp : [temp]\r\n const label = params.quickSearch?.label ?? 'Quick search'\r\n return (\r\n <Chip\r\n onDelete={this.handleQuickSearchRemove}\r\n size='small'\r\n label={\r\n <Typography component='span' variant='caption'>\r\n {label} {items?.map((x) => `\"${x}\"`).join(' ')}\r\n </Typography>\r\n }\r\n />\r\n )\r\n }\r\n\r\n handleRemove = (field: keyof T) => {\r\n if (!this.props.onRemove) return\r\n this.props.onRemove('field', { field })\r\n }\r\n\r\n handleQuickSearchRemove = () => {\r\n if (!this.props.onRemove) return\r\n this.props.onRemove('quickSearch')\r\n }\r\n }\r\n return Filtered\r\n}\r\n\r\nexport default CreateFiltered\r\n"],"names":["CreateFiltered","params","Filtered","_this","_classCallCheck","_len","arguments","length","args","Array","_key","_callSuper","this","concat","_defineProperty","_this$props$filterSta","_params$quickSearch$l","_params$quickSearch","props","filterState","quickSearch","_jsx","temp","values","items","isArray","label","Chip","onDelete","handleQuickSearchRemove","size","_jsxs","Typography","component","variant","children","map","x","join","field","onRemove","_inherits","Component","_createClass","key","value","_this$props$filterSta2","_this2","keys","Object","filter","_Fragment","renderQuickSearch","i","_this2$props$filterSt","_ref","_config$label","item","config","fields","handleRemove","toString","_x$label"],"mappings":"mSASA,SAASA,EAAkBC,GAA2B,IAC9CC,aAAS,SAAAA,IAAA,IAAAC,EAAAC,OAAAF,GAAA,IAAA,IAAAG,EAAAC,UAAAC,OAAAC,EAAAC,IAAAA,MAAAJ,GAAAK,EAAA,EAAAA,EAAAL,EAAAK,IAAAF,EAAAE,GAAAJ,UAAAI,GAoDZ,OApDYP,EAAAQ,EAAAC,KAAAV,EAAAW,GAAAA,OAAAL,IAAAM,EAAAX,EAAA,qBA0BO,WAAK,IAAAY,EAAAC,EAAAC,EACvB,IAAKd,EAAKe,MAAMC,YAAYC,YAAa,OAAOC,QAChD,IAAMC,EAAgD,QAA5CP,EAAGZ,EAAKe,MAAMC,YAAYC,YAAYG,cAAMR,IAAAA,EAAAA,EAAI,GACpDS,EAAQf,MAAMgB,QAAQH,GAAQA,EAAO,CAACA,GACtCI,EAAiC,QAA5BV,EAAqB,QAArBC,EAAGhB,EAAOmB,mBAAPH,IAAkBA,OAAlBA,EAAAA,EAAoBS,aAAKV,IAAAA,EAAAA,EAAI,eAC3C,OACEK,EAACM,EAAI,CACHC,SAAUzB,EAAK0B,wBACfC,KAAK,QACLJ,MACEK,EAACC,GAAWC,UAAU,OAAOC,QAAQ,UAClCC,SAAA,CAAAT,MAAQF,eAAAA,EAAOY,KAAI,SAACC,GAAC,MAAAxB,IAAAA,OAASwB,EAAC,IAAA,IAAKC,KAAK,aAKnDxB,EAAAX,EAEc,gBAAA,SAACoC,GACTpC,EAAKe,MAAMsB,UAChBrC,EAAKe,MAAMsB,SAAS,QAAS,CAAED,MAAAA,OAChCzB,EAAAX,EAAA,2BAEyB,WACnBA,EAAKe,MAAMsB,UAChBrC,EAAKe,MAAMsB,SAAS,kBACrBrC,CAAA,CAAA,OAAAsC,EAAAvC,EApDoBwC,GAoDpBC,EAAAzC,EAAA,CAAA,CAAA0C,IAAA,SAAAC,MAnDD,WAAM,IAAAC,EAAAC,EAAAnC,KACEoC,EAAOC,OAAOD,KAAkCF,QAA9BA,EAAClC,KAAKM,MAAMC,YAAY+B,kBAAMJ,EAAAA,EAAI,CAAA,GAC1D,OACEf,EACGoB,EAAA,CAAAhB,SAAA,CAAAvB,KAAKwC,oBACLJ,EAAKZ,KAAI,SAACQ,EAAKS,GAAK,IAAAC,EAAAC,EAAAC,EACbC,EAAoCH,QAAhCA,EAAGP,EAAK7B,MAAMC,YAAY+B,kBAAMI,SAA7BA,EAAgCV,GACvCc,EAASzD,EAAO0D,OAAOf,GAC7B,OACEvB,EAACM,EAEC,CAAAC,SAAU,WAAF,OAAQmB,EAAKa,aAAahB,EAAI,EACtCd,KAAK,QACLJ,MACEK,EAACC,EAAW,CAAAC,UAAU,OAAOC,QAAQ,UAClCC,SAAA,CAAgC,QAAhCoB,UAAAC,EAAAE,aAAM,EAANA,EAAQhC,aAAK,IAAA8B,EAAAA,EAAIZ,aAAG,EAAHA,EAAKiB,kBAAUN,IAAAA,EAAAA,EAAI,SAAW,IAAAE,aAAI,EAAJA,EAAMrB,KAAI,SAACC,GAAC,IAAAyB,EAAA,MAAA,IAAAjD,OAAgBiD,QAAhBA,EAASzB,EAAEX,aAAKoC,IAAAA,EAAAA,EAAIzB,EAAEQ,MAAK,IAAA,IAAKP,KAAK,YALhGzB,OAAG+B,aAAAA,EAAAA,EAAKiB,YAAUhD,OAAGwC,GAUhC,MAGN,IAAC,IA8BH,OAAOnD,CACT"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sources":["../../src/filter-bar/types.ts"],"sourcesContent":["
|
|
1
|
+
{"version":3,"file":"types.js","sources":["../../src/filter-bar/types.ts"],"sourcesContent":["import { IFilterPanelState } from './create.filter-panel'\r\nimport { IFilterNotesProps } from './ui.units'\r\n\r\nexport type IFilterReason = 'searchInput' | 'filterButton'\r\n\r\n// type Dictionary<T, V, E = any> = {\r\n// [key in keyof T | keyof E]?: V\r\n// }\r\n\r\ntype SingleOrArray<T> = T | T[]\r\n\r\n//#region Search Match\r\nexport enum ESearchMatch {\r\n AlwaysVisible = 'AlwaysVisible',\r\n MatchOnly = 'MatchOnly',\r\n LinkYoutube = 'LinkYoutube',\r\n Link = 'Link',\r\n Guid = 'Guid'\r\n}\r\n\r\ninterface ISearchMatchBase {\r\n rule: ESearchMatch\r\n}\r\n\r\ninterface ISearchMatchMatchOnly extends ISearchMatchBase {\r\n rule: ESearchMatch.MatchOnly\r\n match: (value: string) => boolean\r\n}\r\n\r\ninterface ISearchMatchQuickly extends ISearchMatchBase {\r\n rule: ESearchMatch.AlwaysVisible | ESearchMatch.LinkYoutube | ESearchMatch.Link | ESearchMatch.Guid\r\n}\r\n\r\ntype IFieldSearchMatch = ISearchMatchMatchOnly | ISearchMatchQuickly\r\n//#endregion\r\n\r\n//#region Validate\r\nexport enum EFieldValidate {\r\n LinkYoutube = 'LinkYoutube',\r\n Link = 'Link',\r\n Custom = 'Custom'\r\n}\r\n\r\ninterface IFieldValidateBase {\r\n rule: EFieldValidate\r\n}\r\ninterface IFieldValidateCustom extends IFieldValidateBase {\r\n rule: EFieldValidate.Custom\r\n custom: (value: string) => boolean\r\n}\r\n\r\ninterface IFieldValidateQuickly extends IFieldValidateBase {\r\n rule: EFieldValidate.Link | EFieldValidate.LinkYoutube\r\n}\r\n\r\ntype IFieldValidate = IFieldValidateQuickly | IFieldValidateCustom\r\n//#endregion\r\n\r\n//#region Filter Field\r\nexport interface IQuickSearchDef<T> {\r\n fields: SingleOrArray<keyof T>\r\n label?: string\r\n notes?: IFilterNotesProps\r\n}\r\n\r\ninterface IFilterFieldDef {\r\n label?: string\r\n /** @default string */\r\n type?: 'string' | 'select'\r\n searchMatches?: SingleOrArray<IFieldSearchMatch>\r\n notes?: IFilterNotesProps\r\n // TODO thay vì required thì validate này sẽ chỉ hiện với field nào tồn tại validate\r\n /** @default Required */\r\n validate?: SingleOrArray<IFieldValidate>\r\n}\r\n\r\nexport interface IFilterFieldString extends IFilterFieldDef {\r\n type?: 'string'\r\n}\r\n\r\nexport interface IFilterFieldSelect extends IFilterFieldDef {\r\n type: 'select'\r\n options: { value: string; label?: string }[]\r\n}\r\n\r\nexport type IFilterField = IFilterFieldString | IFilterFieldSelect\r\n\r\n// export type IFilterFields<T> = Dictionary<T, IFilterField, IFilterValid>\r\nexport type IFilterFields<T> = { [key in keyof T]?: IFilterField }\r\n\r\n// ========= ========= ========= State ========= ========= =========\r\nexport interface IFilterItemModel {\r\n value?: string | number | boolean\r\n label?: string\r\n}\r\nexport interface IFilterItemChangeModel<T> extends IFilterItemModel {\r\n field: keyof T\r\n}\r\n\r\n// export type IFilterModel<T> = Dictionary<T, IFilterItemModel[], { Search?: string }>\r\nexport type IFilterModel<T> = { [key in keyof T]?: IFilterItemModel[] }\r\n\r\nexport interface IQuickSearchModel<T> {\r\n fields: SingleOrArray<keyof T>\r\n values?: SingleOrArray<string>\r\n}\r\n\r\nexport interface IFilterState<T> {\r\n filter?: IFilterModel<T>\r\n quickSearch?: IQuickSearchModel<T>\r\n details?: 'add' | 'remove'\r\n}\r\n//#endregion\r\n\r\n//#region For Component\r\nexport interface IFilterBarParams<T> {\r\n fields: IFilterFields<T>\r\n quickSearch?: IQuickSearchDef<T>\r\n id?: string\r\n placeholder?: string\r\n notes?: IFilterNotesProps\r\n}\r\n\r\nexport interface IFilterBarProps<T> {\r\n id?: string\r\n placeholder?: string\r\n value?: IFilterState<T>\r\n onChange?: (value: IFilterState<T>) => void\r\n}\r\n\r\nexport interface IFilterBarState {\r\n panelState: IFilterPanelState\r\n keyword: string\r\n}\r\n\r\nexport type IFilterSubmitFunc<T> = (mode: 'field' | 'quickSearch', data?: IFilterItemChangeModel<T>) => void\r\n//#endregion\r\n"],"names":["ESearchMatch","EFieldValidate"],"mappings":"IAYYA,EAyBAC,GAzBZ,SAAYD,GACVA,EAAA,cAAA,gBACAA,EAAA,UAAA,YACAA,EAAA,YAAA,cACAA,EAAA,KAAA,OACAA,EAAA,KAAA,MACD,CAND,CAAYA,IAAAA,EAMX,CAAA,IAmBD,SAAYC,GACVA,EAAA,YAAA,cACAA,EAAA,KAAA,OACAA,EAAA,OAAA,QACD,CAJD,CAAYA,IAAAA,EAIX,CAAA"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{jsx as
|
|
1
|
+
import{jsx as e}from"react/jsx-runtime";import{styled as i,Box as t,Tooltip as n,Fade as l,IconButton as r,Typography as o}from"@mui/material";import s from"@mui/icons-material/Close";import a from"../components/help-tooltip.js";var m=function(i){return e(u,{children:e(n,{title:"Remove filter",children:e(l,{in:i.visibled,unmountOnExit:!0,children:e(r,{size:"small",onClick:i.onClick,children:e(s,{fontSize:"small"})})})})})},c=function(i){return e(p,{children:i.items.map((function(i,t){return e(o,{component:"li",variant:"body2",children:i},t)}))})},d=function(i){var t,n;return e(u,{className:!0===i.disabledSize?"disabled-size":"",children:e(a,{small:!0,title:null!==(t=i.title)&&void 0!==t?t:"The search includes",children:i.renderContent?i.renderContent():e(c,{items:null!==(n=i.items)&&void 0!==n?n:[]})})})},u=i(t)({display:"inline-flex",flex:"0 0 auto",justifyContent:"center",alignItems:"center","&:not(.disabled-size)":{width:"40px",height:"40px"}}),p=i("ul")({paddingLeft:"1.7rem",marginBottom:0,li:{position:"relative",textAlign:"justify","&::before":{content:'"►"',display:"block",position:"absolute",top:"50%",right:"calc(100% + 6px)",transform:"translateY(-50%)",fontSize:"0.9em"}}});export{m as ButtonClear,d as FilterNotes};
|
|
2
2
|
//# sourceMappingURL=ui.units.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ui.units.js","sources":["../../src/filter-bar/ui.units.tsx"],"sourcesContent":["import React, { FC } from 'react'\r\nimport { Box, Fade, IconButton, IconButtonProps, styled, Tooltip, Typography } from '@mui/material'\r\nimport CloseIcon from '@mui/icons-material/Close'\r\nimport HelpTooltip from '../components/help-tooltip'\r\n\r\nexport interface IButtonClearProps {\r\n visibled?: boolean\r\n onClick: IconButtonProps['onClick']\r\n}\r\n\r\nexport const ButtonClear: FC<IButtonClearProps> = (props) => (\r\n <WrapIcon>\r\n <Tooltip title='Remove filter'>\r\n <Fade in={props.visibled} unmountOnExit>\r\n <IconButton size='small' onClick={props.onClick}>\r\n <CloseIcon fontSize='small' />\r\n </IconButton>\r\n </Fade>\r\n </Tooltip>\r\n </WrapIcon>\r\n)\r\n\r\nexport interface
|
|
1
|
+
{"version":3,"file":"ui.units.js","sources":["../../src/filter-bar/ui.units.tsx"],"sourcesContent":["import React, { FC, ReactNode } from 'react'\r\nimport { Box, Fade, IconButton, IconButtonProps, styled, Tooltip, Typography } from '@mui/material'\r\nimport CloseIcon from '@mui/icons-material/Close'\r\nimport HelpTooltip from '../components/help-tooltip'\r\n\r\nexport interface IButtonClearProps {\r\n visibled?: boolean\r\n onClick: IconButtonProps['onClick']\r\n}\r\n\r\nexport const ButtonClear: FC<IButtonClearProps> = (props) => (\r\n <WrapIcon>\r\n <Tooltip title='Remove filter'>\r\n <Fade in={props.visibled} unmountOnExit>\r\n <IconButton size='small' onClick={props.onClick}>\r\n <CloseIcon fontSize='small' />\r\n </IconButton>\r\n </Fade>\r\n </Tooltip>\r\n </WrapIcon>\r\n)\r\n\r\nexport interface IFilterNotesProps {\r\n title?: string\r\n items?: string[]\r\n disabledSize?: boolean\r\n renderContent?: () => ReactNode\r\n}\r\n\r\nconst HelpTooltipContent: FC<{ items: string[] }> = (props) => (\r\n <WrapList>\r\n {props.items.map((item, index) => (\r\n <Typography key={index} component='li' variant='body2'>\r\n {item}\r\n </Typography>\r\n ))}\r\n </WrapList>\r\n)\r\n\r\nexport const FilterNotes: FC<IFilterNotesProps> = (props) => (\r\n <WrapIcon className={props.disabledSize === true ? 'disabled-size' : ''}>\r\n <HelpTooltip small title={props.title ?? 'The search includes'}>\r\n {props.renderContent ? props.renderContent() : <HelpTooltipContent items={props.items ?? []} />}\r\n </HelpTooltip>\r\n </WrapIcon>\r\n)\r\nconst WrapIcon = styled(Box)({\r\n display: 'inline-flex',\r\n flex: '0 0 auto',\r\n justifyContent: 'center',\r\n alignItems: 'center',\r\n '&:not(.disabled-size)': {\r\n width: '40px',\r\n height: '40px'\r\n }\r\n})\r\n\r\nconst WrapList = styled('ul')({\r\n paddingLeft: '1.7rem',\r\n marginBottom: 0,\r\n li: {\r\n position: 'relative',\r\n textAlign: 'justify',\r\n '&::before': {\r\n content: '\"►\"',\r\n display: 'block',\r\n position: 'absolute',\r\n top: '50%',\r\n right: 'calc(100% + 6px)',\r\n transform: 'translateY(-50%)',\r\n fontSize: '0.9em'\r\n }\r\n }\r\n})\r\n"],"names":["ButtonClear","props","_jsx","WrapIcon","children","Tooltip","title","Fade","in","visibled","unmountOnExit","IconButton","size","onClick","CloseIcon","fontSize","HelpTooltipContent","WrapList","items","map","item","index","Typography","component","variant","FilterNotes","_props$title","_props$items","className","disabledSize","HelpTooltip","small","renderContent","styled","Box","display","flex","justifyContent","alignItems","width","height","paddingLeft","marginBottom","li","position","textAlign","content","top","right","transform"],"mappings":"yOAUaA,EAAqC,SAACC,GAAK,OACtDC,EAACC,EAAQ,CAAAC,SACPF,EAACG,EAAO,CAACC,MAAM,gBAAeF,SAC5BF,EAACK,EAAK,CAAAC,GAAIP,EAAMQ,SAAUC,eAAa,EAAAN,SACrCF,EAACS,EAAW,CAAAC,KAAK,QAAQC,QAASZ,EAAMY,iBACtCX,EAACY,EAAU,CAAAC,SAAS,iBAIjB,EAUPC,EAA8C,SAACf,GAAK,OACxDC,EAACe,YACEhB,EAAMiB,MAAMC,KAAI,SAACC,EAAMC,GAAK,OAC3BnB,EAACoB,EAAU,CAAaC,UAAU,KAAKC,QAAQ,QAC5CpB,SAAAgB,GADcC,EAGlB,KACQ,EAGAI,EAAqC,SAACxB,GAAK,IAAAyB,EAAAC,EAAA,OACtDzB,EAACC,EAAQ,CAACyB,WAAkC,IAAvB3B,EAAM4B,aAAwB,gBAAkB,GAAEzB,SACrEF,EAAC4B,GAAYC,OAAK,EAACzB,MAAkB,QAAboB,EAAEzB,EAAMK,aAAK,IAAAoB,EAAAA,EAAI,sBACtCtB,SAAAH,EAAM+B,cAAgB/B,EAAM+B,gBAAkB9B,EAACc,EAAkB,CAACE,MAAkBS,QAAbA,EAAE1B,EAAMiB,aAAKS,IAAAA,EAAAA,EAAI,QAElF,EAEPxB,EAAW8B,EAAOC,EAAPD,CAAY,CAC3BE,QAAS,cACTC,KAAM,WACNC,eAAgB,SAChBC,WAAY,SACZ,wBAAyB,CACvBC,MAAO,OACPC,OAAQ,UAINvB,EAAWgB,EAAO,KAAPA,CAAa,CAC5BQ,YAAa,SACbC,aAAc,EACdC,GAAI,CACFC,SAAU,WACVC,UAAW,UACX,YAAa,CACXC,QAAS,MACTX,QAAS,QACTS,SAAU,WACVG,IAAK,MACLC,MAAO,mBACPC,UAAW,mBACXlC,SAAU"}
|