d2aura 26.0.4 → 26.0.6

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.
@@ -1 +1 @@
1
- {"version":3,"file":"webPushApi.js","sourceRoot":"","sources":["../../../../api/webPush/webPushApi.ts"],"names":[],"mappings":"AAAA,OAAO,WAAW,MAAM,gBAAgB,CAAC;AAGzC,MAAM,OAAO,UAAW,SAAQ,WAAW;IAGvC,YAAY,KAAe;QACvB,KAAK,CAAC,KAAK,CAAC,CAAC;QACb,IAAI,CAAC,SAAS,GAAG,YAAY,CAAC;IAClC,CAAC;IAED,KAAK,CAAC,iBAAiB;QACnB,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,OAAO,CAChC;YACI,SAAS,EAAE,IAAI,CAAC,SAAS;YACzB,OAAO,EAAE,mBAAmB;YAC5B,wBAAwB,EAAE,IAAI;SACjC,EACD,EAAC,IAAI,QAAqB,EAAE,QAAQ,EAAE,QAAQ,EAAC,CAClD,CAAC;QAEF,OAAO,SAAS,CAAC,MAAM,CAAC;IAC5B,CAAC;IAED,KAAK,CAAC,gBAAgB,CAAC,YAA8B;QACjD,MAAM,gBAAgB,GAAG,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC;QACtD,MAAM,kBAAkB,GAAG,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC;QAExD,MAAM,IAAI,CAAC,OAAO,CACd;YACI,SAAS,EAAE,IAAI,CAAC,SAAS;YACzB,OAAO,EAAE,kBAAkB;SAC9B,EACD,YAAY,CAAC,QAAQ,EACrB,kBAAkB,CAAC,IAAI,CAAC,IAAI,EAC5B,kBAAkB,CAAC,IAAI,CAAC,MAAM,CACjC,CAAC;IACN,CAAC;IAED,KAAK,CAAC,kBAAkB,CAAC,YAA8B;QACnD,MAAM,IAAI,CAAC,OAAO,CACd;YACI,SAAS,EAAE,IAAI,CAAC,SAAS;YACzB,OAAO,EAAE,oBAAoB;SAChC,EACD,YAAY,CAAC,QAAQ,CACxB,CAAC;IACN,CAAC;CAEJ","sourcesContent":["import AbstractApi from \"../abstractApi\";\nimport {D2WebApi, UnivalTypeEnum} from \"d2jsapi\";\n\nexport class WebPushApi extends AbstractApi {\n private eventName: string;\n\n constructor(d2Api: D2WebApi) {\n super(d2Api);\n this.eventName = \"E.web_push\";\n }\n\n async getPublicVapidKey(): Promise<string> {\n const apiResult = await this.callRpc(\n {\n eventName: this.eventName,\n rpcName: \"getPublicVapidKey\",\n skipCheckErrorParameters: true\n },\n {type: UnivalTypeEnum.TEXT, returnAs: \"result\"},\n );\n\n return apiResult.result;\n }\n\n async saveSubscription(subscription: PushSubscription) {\n const subscriptionJson = JSON.stringify(subscription);\n const subscriptionObject = JSON.parse(subscriptionJson);\n\n await this.callRpc(\n {\n eventName: this.eventName,\n rpcName: \"saveSubscription\",\n },\n subscription.endpoint,\n subscriptionObject.keys.auth,\n subscriptionObject.keys.p256dh,\n );\n }\n\n async deleteSubscription(subscription: PushSubscription) {\n await this.callRpc(\n {\n eventName: this.eventName,\n rpcName: \"deleteSubscription\",\n },\n subscription.endpoint,\n );\n }\n\n}"]}
1
+ {"version":3,"file":"webPushApi.js","sourceRoot":"","sources":["../../../../api/webPush/webPushApi.ts"],"names":[],"mappings":"AAAA,OAAO,WAAW,MAAM,gBAAgB,CAAC;AAGzC,MAAM,OAAO,UAAW,SAAQ,WAAW;IAGvC,YAAY,KAAe;QACvB,KAAK,CAAC,KAAK,CAAC,CAAC;QACb,IAAI,CAAC,SAAS,GAAG,YAAY,CAAC;IAClC,CAAC;IAED,KAAK,CAAC,iBAAiB;QACnB,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,OAAO,CAChC;YACI,SAAS,EAAE,IAAI,CAAC,SAAS;YACzB,OAAO,EAAE,mBAAmB;YAC5B,wBAAwB,EAAE,IAAI;SACjC,EACD,EAAC,IAAI,QAAqB,EAAE,QAAQ,EAAE,QAAQ,EAAC,CAClD,CAAC;QAEF,OAAO,SAAS,CAAC,MAAM,CAAC;IAC5B,CAAC;IAED,KAAK,CAAC,gBAAgB,CAAC,YAA8B;QACjD,MAAM,gBAAgB,GAAG,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC;QACtD,MAAM,kBAAkB,GAAG,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC;QAExD,MAAM,IAAI,CAAC,OAAO,CACd;YACI,SAAS,EAAE,IAAI,CAAC,SAAS;YACzB,OAAO,EAAE,kBAAkB;SAC9B,EACD,YAAY,CAAC,QAAQ,EACrB,kBAAkB,CAAC,IAAI,CAAC,IAAI,EAC5B,kBAAkB,CAAC,IAAI,CAAC,MAAM,CACjC,CAAC;IACN,CAAC;IAED,KAAK,CAAC,kBAAkB,CAAC,YAA8B;QACnD,MAAM,IAAI,CAAC,OAAO,CACd;YACI,SAAS,EAAE,IAAI,CAAC,SAAS;YACzB,OAAO,EAAE,oBAAoB;SAChC,EACD,YAAY,CAAC,QAAQ,CACxB,CAAC;IACN,CAAC;CAEJ","sourcesContent":["import AbstractApi from \"../abstractApi\";\r\nimport {D2WebApi, UnivalTypeEnum} from \"d2jsapi\";\r\n\r\nexport class WebPushApi extends AbstractApi {\r\n private eventName: string;\r\n\r\n constructor(d2Api: D2WebApi) {\r\n super(d2Api);\r\n this.eventName = \"E.web_push\";\r\n }\r\n\r\n async getPublicVapidKey(): Promise<string> {\r\n const apiResult = await this.callRpc(\r\n {\r\n eventName: this.eventName,\r\n rpcName: \"getPublicVapidKey\",\r\n skipCheckErrorParameters: true\r\n },\r\n {type: UnivalTypeEnum.TEXT, returnAs: \"result\"},\r\n );\r\n\r\n return apiResult.result;\r\n }\r\n\r\n async saveSubscription(subscription: PushSubscription) {\r\n const subscriptionJson = JSON.stringify(subscription);\r\n const subscriptionObject = JSON.parse(subscriptionJson);\r\n\r\n await this.callRpc(\r\n {\r\n eventName: this.eventName,\r\n rpcName: \"saveSubscription\",\r\n },\r\n subscription.endpoint,\r\n subscriptionObject.keys.auth,\r\n subscriptionObject.keys.p256dh,\r\n );\r\n }\r\n\r\n async deleteSubscription(subscription: PushSubscription) {\r\n await this.callRpc(\r\n {\r\n eventName: this.eventName,\r\n rpcName: \"deleteSubscription\",\r\n },\r\n subscription.endpoint,\r\n );\r\n }\r\n\r\n}"]}
@@ -1 +1 @@
1
- {"version":3,"file":"webPushUtils.js","sourceRoot":"","sources":["../../../../api/webPush/webPushUtils.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,OAAO,OAAO,YAAY;IAE7B,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,UAAsB;QACxC,IAAI,SAAS,CAAC,aAAa,EAAE,CAAC;YAC1B,MAAM,SAAS,CAAC,aAAa,CAAC,QAAQ,CAAC,kBAAkB,CAAC,CAAC;YAC3D,IAAI,CAAC,eAAe,EAAE,CAAC,IAAI,CAAC,KAAK,EAAC,YAAY,EAAC,EAAE;gBAC7C,IAAI,YAAY,EAAE,CAAC;oBACf,MAAM,UAAU,CAAC,gBAAgB,CAAC,YAAY,CAAC,CAAC;gBACpD,CAAC;YACL,CAAC,CAAC,CAAA;QACN,CAAC;aAAM,CAAC;YACJ,OAAO,CAAC,IAAI,CAAC,sEAAsE,CAAC,CAAC;QACzF,CAAC;IACL,CAAC;IAED,MAAM,CAAC,KAAK,CAAC,eAAe;QACxB,IAAI,SAAS,CAAC,aAAa,EAAE,CAAC;YAC1B,MAAM,YAAY,GAAG,MAAM,SAAS,CAAC,aAAa,CAAC,KAAK,CAAC;YACzD,OAAO,MAAM,YAAY,CAAC,WAAW,CAAC,eAAe,EAAE,CAAC;QAC5D,CAAC;QAED,OAAO,IAAI,CAAC;IAChB,CAAC;CAEJ","sourcesContent":["import {WebPushApi} from \"./webPushApi\";\n\nexport default class WebPushUtils {\n\n static async initPush(webPushApi: WebPushApi) {\n if (navigator.serviceWorker) {\n await navigator.serviceWorker.register(\"./push-worker.js\");\n this.getSubscription().then(async subscription => {\n if (subscription) {\n await webPushApi.saveSubscription(subscription);\n }\n })\n } else {\n console.warn(\"Service workers or Push API are not supported on this browser/origin\");\n }\n }\n\n static async getSubscription(): Promise<PushSubscription | null> {\n if (navigator.serviceWorker) {\n const registration = await navigator.serviceWorker.ready;\n return await registration.pushManager.getSubscription();\n }\n\n return null;\n }\n\n}"]}
1
+ {"version":3,"file":"webPushUtils.js","sourceRoot":"","sources":["../../../../api/webPush/webPushUtils.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,OAAO,OAAO,YAAY;IAE7B,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,UAAsB;QACxC,IAAI,SAAS,CAAC,aAAa,EAAE,CAAC;YAC1B,MAAM,SAAS,CAAC,aAAa,CAAC,QAAQ,CAAC,kBAAkB,CAAC,CAAC;YAC3D,IAAI,CAAC,eAAe,EAAE,CAAC,IAAI,CAAC,KAAK,EAAC,YAAY,EAAC,EAAE;gBAC7C,IAAI,YAAY,EAAE,CAAC;oBACf,MAAM,UAAU,CAAC,gBAAgB,CAAC,YAAY,CAAC,CAAC;gBACpD,CAAC;YACL,CAAC,CAAC,CAAA;QACN,CAAC;aAAM,CAAC;YACJ,OAAO,CAAC,IAAI,CAAC,sEAAsE,CAAC,CAAC;QACzF,CAAC;IACL,CAAC;IAED,MAAM,CAAC,KAAK,CAAC,eAAe;QACxB,IAAI,SAAS,CAAC,aAAa,EAAE,CAAC;YAC1B,MAAM,YAAY,GAAG,MAAM,SAAS,CAAC,aAAa,CAAC,KAAK,CAAC;YACzD,OAAO,MAAM,YAAY,CAAC,WAAW,CAAC,eAAe,EAAE,CAAC;QAC5D,CAAC;QAED,OAAO,IAAI,CAAC;IAChB,CAAC;CAEJ","sourcesContent":["import {WebPushApi} from \"./webPushApi\";\r\n\r\nexport default class WebPushUtils {\r\n\r\n static async initPush(webPushApi: WebPushApi) {\r\n if (navigator.serviceWorker) {\r\n await navigator.serviceWorker.register(\"./push-worker.js\");\r\n this.getSubscription().then(async subscription => {\r\n if (subscription) {\r\n await webPushApi.saveSubscription(subscription);\r\n }\r\n })\r\n } else {\r\n console.warn(\"Service workers or Push API are not supported on this browser/origin\");\r\n }\r\n }\r\n\r\n static async getSubscription(): Promise<PushSubscription | null> {\r\n if (navigator.serviceWorker) {\r\n const registration = await navigator.serviceWorker.ready;\r\n return await registration.pushManager.getSubscription();\r\n }\r\n\r\n return null;\r\n }\r\n\r\n}"]}
@@ -16,17 +16,12 @@ import { DbBoolean } from "../api/types/dbBoolean";
16
16
  import { createStyles } from "antd-style";
17
17
  import WithCss from "d2coreui/components/style/withCss";
18
18
  import ColorTag from "./components/colorTag/colorTag";
19
- const useStyles = createStyles(({ css }) => {
19
+ const useStyles = createStyles(({ css, token }) => {
20
20
  return {
21
- compactBreadcrumb: css `
22
- ol {
23
- display: table;
24
- }
25
-
26
- ol li {
27
- display: table-cell;
28
- white-space: nowrap;
29
- }
21
+ breadcrumbPanel: css `
22
+ border-bottom: 1px solid ${token.colorBorder};
23
+ padding: 10px 12px 0;
24
+ font-weight: 500;
30
25
  `
31
26
  };
32
27
  });
@@ -393,17 +388,17 @@ export class AbstractListPanel extends AdvancedFilteredGrid {
393
388
  return {
394
389
  title: React.createElement(React.Fragment, null,
395
390
  pageName,
396
- code && React.createElement(ColorTag, { style: { marginLeft: 4, fontSize: 14 } }, code)),
391
+ code && React.createElement(ColorTag, { style: { margin: "0 0 0 4px", fontSize: 14 } }, code)),
397
392
  };
398
393
  }
399
394
  renderBreadcrumb() {
400
395
  const pageTitle = this.getPageTitle();
401
396
  if (pageTitle) {
402
397
  const breadcrumbCode = this.getBreadcrumbCode();
403
- return (React.createElement(WithCss, { useStyles: useStyles }, (css) => React.createElement(Breadcrumb, { className: css.styles.compactBreadcrumb, style: { paddingBottom: 10, fontSize: 20, overflowX: "auto" }, items: [
398
+ return (React.createElement(Breadcrumb, { style: { paddingBottom: 10, fontSize: 20, overflowX: "auto" }, items: [
404
399
  ...this.props.breadcrumbPath?.map(value => this.renderBreadcrumbItem(value.pageName, value.code)) ?? [],
405
400
  this.renderBreadcrumbItem(pageTitle, breadcrumbCode),
406
- ] })));
401
+ ] }));
407
402
  }
408
403
  return undefined;
409
404
  }
@@ -418,7 +413,7 @@ export class AbstractListPanel extends AdvancedFilteredGrid {
418
413
  }
419
414
  render() {
420
415
  return (React.createElement("div", { style: { display: "flex", flexDirection: "column", height: "100%" } },
421
- React.createElement("div", { style: { padding: "10px 12px 0px", borderBottom: "2px solid #f5f5f5", fontWeight: 500 } }, this.renderBreadcrumb()),
416
+ React.createElement(WithCss, { useStyles: useStyles }, (css) => React.createElement("div", { className: css.styles.breadcrumbPanel }, this.renderBreadcrumb())),
422
417
  React.createElement("div", { style: { position: "relative", height: "100%" } },
423
418
  this.renderHistoryModalDialog(),
424
419
  this.renderDetailPanelModalDialog(),
@@ -1 +1 @@
1
- {"version":3,"file":"abstractListPanel.js","sourceRoot":"","sources":["../../../coreui/abstractListPanel.tsx"],"names":[],"mappings":"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","sourcesContent":["import React from \"react\";\r\nimport ExtendedDataGrid, {ExtendedDataGridProps, GridConfiguration} from \"d2coreui/components/grid/extendedDataGrid\";\r\nimport {DataGridColDef, OnLoadDataCallback} from \"d2coreui/components/grid/dataGrid\";\r\nimport {\r\n GridReadyEvent,\r\n IGetRowsParams,\r\n RowDoubleClickedEvent,\r\n RowModelType,\r\n SelectionChangedEvent\r\n} from \"ag-grid-community\";\r\nimport {Closeable, PageableList} from \"../api/abstractEntityApi\";\r\nimport {Breadcrumb, Button, Drawer, Popover} from \"antd\";\r\nimport i18n from \"d2core/i18n/i18n\";\r\nimport {\r\n BulbOutlined,\r\n CheckCircleOutlined,\r\n CloseCircleOutlined,\r\n CopyOutlined,\r\n DeleteOutlined,\r\n HistoryOutlined,\r\n MoreOutlined,\r\n PlusCircleOutlined,\r\n ProfileOutlined\r\n} from \"@ant-design/icons\";\r\nimport {ModalDialog, ModalDialogMode} from \"d2coreui/components/modal/modalDialog\";\r\nimport AuditableEntity from \"../api/types/auditableEntity\";\r\nimport AdvancedFilteredGrid, {\r\n AdvancedFilteredGridProps,\r\n AdvancedFilteredGridState\r\n} from \"./components/advancedFilter/advancedFilteredGrid\";\r\nimport {GeneralEntityColumn} from \"./components/advancedFilter/advancedFilterColumnDefinitions\";\r\nimport AdvancedFilterButton from \"./components/advancedFilter/advancedFilterButton\";\r\nimport {PanelConfiguration} from \"../core/types/panelConfiguration\";\r\nimport auditEntityRowStyleRules from \"./components/grid/auditEntityRowStyleRules\";\r\nimport TitleWithCodePanel from \"./components/titleWithCodePanel/titleWithCodePanel\";\r\nimport EntityHistoryListPanel from \"./components/history/entityHistoryListPanel\";\r\nimport {AccessRight} from \"../api/types/accessRight\";\r\nimport {ERROR_COLOR, SUCCESS_COLOR} from \"../api/constants/constants\";\r\nimport AbstractEntityConfigPanel from \"./components/editor/abstractEntityConfigPanel\";\r\nimport {DbBoolean} from \"../api/types/dbBoolean\";\r\nimport {ItemType} from \"antd/es/breadcrumb/Breadcrumb\";\r\nimport {createStyles} from \"antd-style\";\r\nimport WithCss from \"d2coreui/components/style/withCss\";\r\nimport ColorTag from \"./components/colorTag/colorTag\";\r\nimport {GridRowStyle} from \"d2coreui/components/grid/cell/tableDefaultRowStyleRules\";\r\n\r\nconst useStyles = createStyles(({css}) => {\r\n return {\r\n compactBreadcrumb: css`\r\n ol {\r\n display: table;\r\n }\r\n\r\n ol li {\r\n display: table-cell;\r\n white-space: nowrap;\r\n }\r\n `\r\n }\r\n});\r\n\r\nexport const DETAIL_PANEL_DEFAULT_WIDTH = 560;\r\nconst MAX_WIDTH_MOBILE = 500;\r\n\r\nexport interface AbstractBreadcrumbItem {\r\n pageName: string\r\n code: string\r\n}\r\n\r\nexport interface AbstractListPanelConfiguration extends PanelConfiguration {\r\n gridConfiguration: GridConfiguration\r\n}\r\n\r\nexport interface AbstractListPanelProps<\r\n T extends AuditableEntity,\r\n C extends AbstractListPanelConfiguration = AbstractListPanelConfiguration\r\n> extends AdvancedFilteredGridProps<T> {\r\n breadcrumbPath?: AbstractBreadcrumbItem[]\r\n\r\n getConfiguration(initialConfiguration: C): C\r\n\r\n onPanelConfigurationChanged(): void\r\n}\r\n\r\nexport interface AbstractListPanelState<\r\n T extends AuditableEntity,\r\n C extends AbstractListPanelConfiguration = AbstractListPanelConfiguration\r\n> extends AdvancedFilteredGridState<T> {\r\n panelConfiguration: C\r\n detailPanelVisible: boolean\r\n modalDetailPanelVisible: boolean\r\n deletedRecordsVisible: boolean\r\n historyModalVisible: boolean\r\n dropdownMenuVisible: boolean\r\n waitingForNewEntity: boolean\r\n waitingForEntityCopy: boolean\r\n quickActionsListVisible: boolean\r\n accessRight: AccessRight\r\n}\r\n\r\nexport abstract class AbstractListPanel<\r\n T extends AuditableEntity,\r\n P extends AbstractListPanelProps<T, C>,\r\n S extends AbstractListPanelState<T, C>,\r\n C extends AbstractListPanelConfiguration = AbstractListPanelConfiguration,\r\n> extends AdvancedFilteredGrid<T, P, S> {\r\n\r\n protected detailPanel: AbstractEntityConfigPanel<any, any> | null = null;\r\n protected entityHistoryListPanel: EntityHistoryListPanel<T> | null = null;\r\n protected refreshListHandler: Closeable | null = null;\r\n private idToSelect: number | undefined = undefined;\r\n\r\n protected constructor(props: Readonly<P>) {\r\n super(props);\r\n\r\n this.onSelectionChanged = this.onSelectionChanged.bind(this);\r\n this.onRowDoubleClicked = this.onRowDoubleClicked.bind(this);\r\n this.onHistoryListPanelSelectionChanged = this.onHistoryListPanelSelectionChanged.bind(this);\r\n this.renderDetailPanel = this.renderDetailPanel.bind(this);\r\n this.renderDetailPanelForHistory = this.renderDetailPanelForHistory.bind(this);\r\n this.renderControlPanel = this.renderControlPanel.bind(this);\r\n this.renderToolbar = this.renderToolbar.bind(this);\r\n }\r\n\r\n protected initialState: Omit<AbstractListPanelState<T, C>, \"panelConfiguration\"> = {\r\n detailPanelVisible: false,\r\n modalDetailPanelVisible: false,\r\n deletedRecordsVisible: false,\r\n historyModalVisible: false,\r\n dropdownMenuVisible: false,\r\n columnDefs: this.getInitialColumnDefs(),\r\n loading: false,\r\n datasource: {\r\n getRows: async (params: IGetRowsParams) => {\r\n if (this.firstLoadedPage) {\r\n let pageableList: PageableList<T>;\r\n if (this.manualReload && params.startRow === 0 && params.endRow === 100) {\r\n this.manualReload = false;\r\n pageableList = this.firstLoadedPage;\r\n } else {\r\n pageableList = await this.getRecords(params.startRow, params.endRow);\r\n }\r\n params.successCallback(pageableList.data, pageableList.totalNumberOfRows);\r\n\r\n setTimeout(() => {\r\n this.setState({selectedData: this.gridApi?.getSelectedRows() ?? []});\r\n\r\n if (this.idToSelect !== undefined && pageableList.data.some(value => value.id === this.idToSelect)) {\r\n const rowNode = this.gridApi?.getRowNode(this.idToSelect.toString());\r\n this.gridApi?.ensureNodeVisible(rowNode);\r\n rowNode?.setSelected(true, true);\r\n this.idToSelect = undefined;\r\n }\r\n }, 200);\r\n } else {\r\n params.successCallback([], 0);\r\n }\r\n }\r\n },\r\n selectedData: [],\r\n waitingForNewEntity: false,\r\n waitingForEntityCopy: false,\r\n quickActionsListVisible: false,\r\n accessRight: AccessRight.NONE,\r\n filterConditions: [],\r\n }\r\n\r\n protected async onLoadData(callback: OnLoadDataCallback): Promise<void> {\r\n await super.onLoadData(callback);\r\n this.subscribeRefreshList();\r\n }\r\n\r\n protected subscribeRefreshList() {\r\n this.refreshListHandler = this.props.api.subscribeRefreshList(() => {\r\n this.gridApi?.refreshInfiniteCache();\r\n })\r\n }\r\n\r\n componentWillUnmount() {\r\n this.refreshListHandler?.close();\r\n }\r\n\r\n protected initialGridConfiguration: GridConfiguration = {\r\n pageSize: -1,\r\n columnSearchVisible: true,\r\n rowStyleRules: auditEntityRowStyleRules(),\r\n defaultRowStyleRules: auditEntityRowStyleRules(),\r\n }\r\n\r\n getPanelConfiguration(): AbstractListPanelConfiguration {\r\n return this.state.panelConfiguration;\r\n }\r\n\r\n onPanelConfigurationChanged(configuration: Partial<AbstractListPanelConfiguration>) {\r\n const panelConfiguration = this.state.panelConfiguration;\r\n Object.assign(panelConfiguration, configuration);\r\n this.setState({panelConfiguration: panelConfiguration}, () => {\r\n this.props.onPanelConfigurationChanged();\r\n });\r\n }\r\n\r\n protected async onRecordsLoaded(): Promise<void> {\r\n const accessRight = await this.props.api.getAccessRight();\r\n this.setState({accessRight: accessRight});\r\n }\r\n\r\n getOnlyValidRecords(): boolean {\r\n return !this.state.deletedRecordsVisible;\r\n }\r\n\r\n updateGrid(entity: T) {\r\n this.setState({modalDetailPanelVisible: false});\r\n this.idToSelect = entity.id;\r\n this.gridApi?.refreshInfiniteCache();\r\n }\r\n\r\n abstract getInitialColumnDefs(): DataGridColDef[];\r\n\r\n abstract renderDetailPanel(): React.ReactElement;\r\n\r\n abstract renderDetailPanelForHistory(entity: T | undefined, differences: string[]): React.ReactElement;\r\n\r\n protected focusFieldInDetailPanel(): void {\r\n this.detailPanel?.focusFirstField();\r\n }\r\n\r\n protected getAuditColumnDefs(): DataGridColDef[] {\r\n const auditColumnParams: Partial<DataGridColDef> = {\r\n group: i18n(\"Audit\"),\r\n initialHide: true,\r\n }\r\n\r\n return [\r\n this.getDateTimeColumn(GeneralEntityColumn.CREATE_DATE, {headerName: i18n(\"Date of Insert\"), ...auditColumnParams}),\r\n this.getStringColumn(GeneralEntityColumn.CREATED_BY, {headerName: i18n(\"Created By\"), ...auditColumnParams}),\r\n this.getDateTimeColumn(GeneralEntityColumn.MODIFY_DATE, {headerName: i18n(\"Modify Date\"), ...auditColumnParams}),\r\n this.getStringColumn(GeneralEntityColumn.MODIFIED_BY, {headerName: i18n(\"Modified By\"), ...auditColumnParams}),\r\n this.getDbBooleanColumn(GeneralEntityColumn.VALIDITY, {headerName: i18n(\"Valid\"), ...auditColumnParams}),\r\n ]\r\n }\r\n\r\n protected onCloseDetailPanel() {\r\n this.setState({\r\n selectedData: this.gridApi?.getSelectedRows() ?? [],\r\n detailPanelVisible: false,\r\n modalDetailPanelVisible: false\r\n });\r\n this.dataGrid?.showDetailPanel(false);\r\n }\r\n\r\n protected onRowDoubleClicked(event: RowDoubleClickedEvent) {\r\n this.setState({\r\n selectedData: [event.data],\r\n detailPanelVisible: true,\r\n modalDetailPanelVisible: this.isMobile(),\r\n });\r\n\r\n if (!this.isMobile()) {\r\n this.dataGrid?.showDetailPanel(true);\r\n }\r\n }\r\n\r\n protected getDetailPanelDefaultWidth(): number {\r\n return DETAIL_PANEL_DEFAULT_WIDTH;\r\n }\r\n\r\n protected getExtendedDataGridFilterPanel(): ExtendedDataGridProps[\"filterPanel\"] | undefined {\r\n return undefined;\r\n }\r\n\r\n onSelectionChanged(event: SelectionChangedEvent) {\r\n const selectedRows = event.api.getSelectedRows();\r\n if (selectedRows.length > 0) {\r\n this.setState({selectedData: selectedRows});\r\n } else {\r\n this.setState({selectedData: [], detailPanelVisible: false});\r\n this.dataGrid?.showDetailPanel(false);\r\n }\r\n }\r\n\r\n protected adaptNewRecord(newRecord: T) {\r\n newRecord;\r\n }\r\n\r\n protected getDataToDelete() {\r\n return this.state.selectedData.filter(data => data.ano_platny === DbBoolean.TRUE);\r\n }\r\n\r\n protected getDataToRecover() {\r\n return this.state.selectedData.filter(data => data.ano_platny === DbBoolean.FALSE);\r\n }\r\n\r\n protected isValidityChangeDisabled(): boolean {\r\n return this.state.loading || this.state.selectedData[0]?.id === undefined;\r\n }\r\n\r\n protected renderValidityButton(): React.ReactNode | undefined {\r\n const operationDisabled = this.isValidityChangeDisabled();\r\n\r\n const dataToDelete = this.getDataToDelete();\r\n const dataToRecover = this.getDataToRecover();\r\n\r\n let allowedAction: \"delete\" | \"recover\" | \"none\" = \"none\";\r\n if (dataToDelete.length > 0) {\r\n allowedAction = \"delete\";\r\n } else if (dataToRecover.length > 0) {\r\n allowedAction = \"recover\";\r\n } else {\r\n allowedAction = \"none\";\r\n }\r\n\r\n return (\r\n <Button\r\n style={{width: 44}}\r\n title={allowedAction === \"recover\" ? i18n(\"Mark Record As Valid\") : i18n(\"Mark Record As Deleted\")}\r\n disabled={operationDisabled || allowedAction === \"none\"}\r\n icon={allowedAction === \"recover\" ? <CheckCircleOutlined/> : <CloseCircleOutlined/>}\r\n onClick={() => {\r\n ModalDialog.delete({\r\n mode: ModalDialogMode.YES_NO,\r\n title: <span style={{whiteSpace: \"nowrap\"}}>\r\n {allowedAction === \"recover\" ? i18n(\"Mark %n records as valid?\", dataToRecover.length) : i18n(\"Mark %n records as deleted?\", dataToDelete.length)}\r\n </span>,\r\n icon:\r\n allowedAction === \"delete\" ?\r\n <CloseCircleOutlined style={{color: ERROR_COLOR}}/>\r\n :\r\n <CheckCircleOutlined style={{color: SUCCESS_COLOR}}/>,\r\n onOk: async () => {\r\n for (const data of allowedAction === \"delete\" ? dataToDelete : dataToRecover) {\r\n const isOk = await this.props.api.setValidity(data, allowedAction === \"recover\");\r\n if (!isOk) {\r\n return;\r\n }\r\n }\r\n this.gridApi?.refreshInfiniteCache();\r\n }\r\n });\r\n }}\r\n />\r\n );\r\n }\r\n\r\n protected renderAdvancedFilterButton(): React.ReactNode | undefined {\r\n const advancedFilterConfig = this.getAdvancedFilterConfig();\r\n\r\n if (advancedFilterConfig) {\r\n return (\r\n <AdvancedFilterButton\r\n advancedFilterApi={this.props.advancedFilterApi}\r\n listName={advancedFilterConfig.listName}\r\n columnDefinitions={this.getAdvancedFilterColumnDefinitions()}\r\n filterConditions={this.state.filterConditions}\r\n onApplyFilter={this.onApplyFilter}\r\n onMenuItemClicked={() => {\r\n this.setState({dropdownMenuVisible: false});\r\n }}\r\n />\r\n );\r\n }\r\n\r\n return undefined;\r\n }\r\n\r\n protected isMobile(): boolean {\r\n return window.innerWidth <= MAX_WIDTH_MOBILE;\r\n }\r\n\r\n protected renderCopyButton(): React.ReactNode | undefined {\r\n const disabled = this.state.loading || this.state.selectedData.length !== 1 || this.state.selectedData[0].id === undefined;\r\n\r\n return (\r\n <Button\r\n style={{width: 44}}\r\n title={i18n(\"Create Copy\")}\r\n disabled={disabled}\r\n loading={this.state.waitingForEntityCopy}\r\n icon={<CopyOutlined/>}\r\n onClick={async () => {\r\n this.setState({waitingForEntityCopy: true});\r\n const newRecord = await this.props.api.createNewEntity(this.state.selectedData[0]);\r\n this.adaptNewRecord(newRecord);\r\n this.setState({selectedData: [newRecord], dropdownMenuVisible: false, waitingForEntityCopy: false});\r\n if (this.isMobile()) {\r\n this.setState({modalDetailPanelVisible: true})\r\n } else {\r\n this.setState({detailPanelVisible: true});\r\n this.dataGrid?.showDetailPanel(true);\r\n setTimeout(() => this.focusFieldInDetailPanel());\r\n }\r\n }}\r\n />\r\n );\r\n }\r\n\r\n protected renderNewRecordButton(): React.ReactNode | undefined {\r\n return (\r\n <Button\r\n style={{width: 44}}\r\n title={i18n(\"New Record\")}\r\n disabled={this.state.loading}\r\n loading={this.state.waitingForNewEntity}\r\n icon={<PlusCircleOutlined/>}\r\n onClick={() => {\r\n this.gridApi?.deselectAll();\r\n setTimeout(async () => {\r\n this.setState({waitingForNewEntity: true});\r\n const newRecord = await this.props.api.createNewEntity();\r\n this.adaptNewRecord(newRecord);\r\n this.setState({selectedData: [newRecord], waitingForNewEntity: false});\r\n if (this.isMobile()) {\r\n this.setState({modalDetailPanelVisible: true})\r\n } else {\r\n this.setState({detailPanelVisible: true});\r\n this.dataGrid?.showDetailPanel(true);\r\n this.focusFieldInDetailPanel();\r\n }\r\n })\r\n }}\r\n />\r\n );\r\n }\r\n\r\n protected renderDetailPanelButton(): React.ReactNode | undefined {\r\n const disabled = this.state.loading || this.state.selectedData.length !== 1 || this.state.selectedData[0].id === undefined;\r\n\r\n return (\r\n <Button\r\n style={{width: 44}}\r\n type={this.state.detailPanelVisible ? \"primary\" : \"default\"}\r\n title={i18n(this.state.detailPanelVisible ? \"Hide Detail\" : \"Show Detail\")}\r\n disabled={disabled}\r\n icon={<ProfileOutlined/>}\r\n onClick={() => {\r\n if (this.isMobile()) {\r\n this.setState({modalDetailPanelVisible: true})\r\n } else {\r\n const detailPanelVisible = this.state.detailPanelVisible;\r\n this.setState({detailPanelVisible: !detailPanelVisible});\r\n this.dataGrid?.showDetailPanel(!detailPanelVisible);\r\n }\r\n }}\r\n />\r\n )\r\n }\r\n\r\n protected renderTrashButton(): React.ReactNode | undefined {\r\n return (\r\n <Button\r\n style={{width: 44}}\r\n type={this.state.deletedRecordsVisible ? \"primary\" : \"default\"}\r\n title={i18n(this.state.deletedRecordsVisible ? \"Hide Deleted Records\" : \"Show Deleted Records\")}\r\n icon={<DeleteOutlined/>}\r\n onClick={() => {\r\n this.setState({deletedRecordsVisible: !this.state.deletedRecordsVisible}, () => {\r\n this.gridApi?.refreshInfiniteCache();\r\n });\r\n }}\r\n />\r\n )\r\n }\r\n\r\n protected renderShortcutButton(): React.ReactNode | undefined {\r\n if (this.renderShortcutPanel()) {\r\n const disabled = this.state.loading || this.state.selectedData.length !== 1 || this.state.selectedData[0].id === undefined;\r\n\r\n return (\r\n <Button\r\n style={{width: 44}}\r\n title={i18n(\"Quick Actions\")}\r\n disabled={disabled}\r\n icon={<BulbOutlined/>}\r\n onClick={() => {\r\n this.setState({quickActionsListVisible: true, dropdownMenuVisible: false});\r\n }}\r\n />\r\n )\r\n }\r\n return undefined;\r\n }\r\n\r\n protected renderAdditionalButtons(): React.ReactNode | undefined {\r\n return undefined;\r\n }\r\n\r\n protected renderHistoryButton(): React.ReactNode | undefined {\r\n return (\r\n <Button\r\n disabled={this.state.loading || this.state.selectedData.length !== 1 || this.state.selectedData[0].id === undefined}\r\n onClick={() => {\r\n this.setState({historyModalVisible: true});\r\n }}\r\n >\r\n <HistoryOutlined/>\r\n </Button>\r\n );\r\n }\r\n\r\n protected renderShortcutPanel(): React.ReactNode | undefined {\r\n return undefined;\r\n }\r\n\r\n protected renderShortcutDrawer() {\r\n return (\r\n <Drawer\r\n title={<TitleWithCodePanel title={this.getPageTitle()} code={this.getBreadcrumbCode() ?? \"\"}/>}\r\n styles={{body: {padding: 0}}}\r\n placement=\"top\"\r\n height={240}\r\n onClose={() => {\r\n this.setState({quickActionsListVisible: false})\r\n }}\r\n open={this.state.quickActionsListVisible}\r\n >\r\n {this.renderShortcutPanel()}\r\n </Drawer>\r\n );\r\n }\r\n\r\n protected renderToolbar(originalSearchBar: React.ReactElement): React.ReactElement {\r\n return originalSearchBar;\r\n }\r\n\r\n renderToolbarButtons() {\r\n if (this.isMobile()) {\r\n return (\r\n <>\r\n <Popover\r\n open={this.state.dropdownMenuVisible}\r\n onOpenChange={visible => {\r\n this.setState({dropdownMenuVisible: visible})\r\n }}\r\n content={\r\n <>\r\n <div>{this.renderAdvancedFilterButton()}</div>\r\n <div>{this.renderCopyButton()}</div>\r\n <div>{this.renderValidityButton()}</div>\r\n <div>{this.renderTrashButton()}</div>\r\n <div>{this.renderShortcutButton()}</div>\r\n <div>{this.renderAdditionalButtons()}</div>\r\n </>\r\n }\r\n trigger=\"click\"\r\n >\r\n <Button>\r\n <MoreOutlined/>\r\n </Button>\r\n </Popover>\r\n {this.renderNewRecordButton()}\r\n {this.renderDetailPanelButton()}\r\n </>\r\n )\r\n } else {\r\n return <>\r\n {this.renderAdvancedFilterButton()}\r\n {this.renderNewRecordButton()}\r\n {this.renderCopyButton()}\r\n {this.renderDetailPanelButton()}\r\n {this.renderValidityButton()}\r\n {this.renderTrashButton()}\r\n {this.renderHistoryButton()}\r\n {this.renderShortcutButton()}\r\n {this.renderAdditionalButtons()}\r\n </>\r\n }\r\n }\r\n\r\n protected renderControlPanel(): JSX.Element | null {\r\n return null;\r\n }\r\n\r\n protected getRowSelection(): \"single\" | \"multiple\" {\r\n return \"multiple\";\r\n }\r\n\r\n protected getRowModelType(): RowModelType {\r\n return \"infinite\";\r\n }\r\n\r\n protected getRowData(): T[] | undefined {\r\n return undefined;\r\n }\r\n\r\n protected getRowStyle(params: any): GridRowStyle | undefined {\r\n params;\r\n return undefined;\r\n }\r\n\r\n abstract getPageTitle(): string\r\n\r\n protected getLoadedData(): T[] {\r\n const data: T[] = [];\r\n this.gridApi?.forEachNode(value => data.push(value.data));\r\n\r\n return data;\r\n }\r\n\r\n private renderDetailPanelModalDialog() {\r\n return (\r\n <ModalDialog\r\n className=\"modal-no-header full-screen-modal\"\r\n mode={ModalDialogMode.NO_BUTTONS}\r\n closable={false}\r\n open={this.state.modalDetailPanelVisible}\r\n styles={{body: {padding: 0}}}\r\n initialWidth={window.innerWidth}\r\n initialHeight={window.innerHeight}\r\n forceRender\r\n >\r\n {this.renderDetailPanel()}\r\n </ModalDialog>\r\n )\r\n }\r\n\r\n protected onHistoryListPanelSelectionChanged() {\r\n }\r\n\r\n protected isEqualCustomizerForHistory(key: string, value: any, other: any): boolean | undefined {\r\n key; value; other;\r\n return undefined;\r\n }\r\n\r\n private renderHistoryModalDialog(): React.ReactElement {\r\n const selectedEntity = this.state.selectedData[0];\r\n\r\n return (\r\n <ModalDialog\r\n styles={{body: {padding: 0}}}\r\n mode={ModalDialogMode.NO_BUTTONS}\r\n open={this.state.historyModalVisible}\r\n onCancel={() => this.setState({historyModalVisible: false})}\r\n title={<TitleWithCodePanel title={i18n(\"History\")} code={selectedEntity?.code ?? \"\"}/>}\r\n initialWidth={window.innerWidth * 0.99}\r\n initialHeight={window.innerHeight * 0.95}\r\n >\r\n <EntityHistoryListPanel\r\n ref={component => this.entityHistoryListPanel = component}\r\n api={this.props.api}\r\n entity={selectedEntity}\r\n renderDetail={this.renderDetailPanelForHistory}\r\n detailPanelWidth={this.getDetailPanelDefaultWidth() * 2}\r\n onSelectionChanged={this.onHistoryListPanelSelectionChanged}\r\n isEqualCustomizer={this.isEqualCustomizerForHistory}\r\n />\r\n </ModalDialog>\r\n );\r\n }\r\n\r\n private renderBreadcrumbItem(pageName: React.ReactNode, code?: string): ItemType {\r\n return {\r\n title: <>\r\n {pageName}\r\n {code && <ColorTag style={{marginLeft: 4, fontSize: 14}}>{code}</ColorTag>}\r\n </>,\r\n }\r\n }\r\n\r\n private renderBreadcrumb() {\r\n const pageTitle = this.getPageTitle();\r\n\r\n if (pageTitle) {\r\n const breadcrumbCode = this.getBreadcrumbCode();\r\n return (\r\n <WithCss useStyles={useStyles}>{(css) =>\r\n <Breadcrumb\r\n className={css.styles.compactBreadcrumb}\r\n style={{paddingBottom: 10, fontSize: 20, overflowX: \"auto\"}}\r\n items={\r\n [\r\n ...this.props.breadcrumbPath?.map(value => this.renderBreadcrumbItem(value.pageName, value.code)) ?? [],\r\n this.renderBreadcrumbItem(pageTitle, breadcrumbCode),\r\n ]\r\n }\r\n >\r\n </Breadcrumb>\r\n }</WithCss>\r\n );\r\n }\r\n return undefined;\r\n }\r\n\r\n protected getBreadcrumbCode() {\r\n return this.state.selectedData[0]?.code ?? undefined;\r\n }\r\n\r\n protected getExtendedBreadcrumbPath() {\r\n return [\r\n ...this.props.breadcrumbPath ?? [],\r\n {pageName: this.getPageTitle() ?? \"\", code: this.getBreadcrumbCode() ?? \"\"}\r\n ]\r\n }\r\n\r\n render() {\r\n return (\r\n <div style={{display: \"flex\", flexDirection: \"column\", height: \"100%\"}}>\r\n <div style={{padding: \"10px 12px 0px\", borderBottom: \"2px solid #f5f5f5\", fontWeight: 500}}>\r\n {this.renderBreadcrumb()}\r\n </div>\r\n <div style={{position: \"relative\", height: \"100%\"}}>\r\n {this.renderHistoryModalDialog()}\r\n {this.renderDetailPanelModalDialog()}\r\n {this.renderShortcutDrawer()}\r\n <ExtendedDataGrid<T>\r\n tablePanelStyle={{\r\n marginTop: 8,\r\n }}\r\n panelStyle={{\r\n paddingTop: 8,\r\n }}\r\n ref={(dataGrid) => {\r\n this.dataGrid = dataGrid;\r\n }}\r\n defaultGridConfiguration={this.state.panelConfiguration.gridConfiguration}\r\n onChangeConfiguration={gridConfiguration => {\r\n this.onPanelConfigurationChanged({gridConfiguration: gridConfiguration});\r\n }}\r\n onGridReady={(params: GridReadyEvent) => {\r\n this.gridApi = params.api;\r\n }}\r\n rowModelType={this.getRowModelType()}\r\n rowData={this.getRowData()}\r\n datasource={this.state.datasource}\r\n onLoadData={this.onLoadData}\r\n onSelectionChanged={this.onSelectionChanged}\r\n columnDefs={this.state.columnDefs}\r\n search={{\r\n onSearch: () => {\r\n this.dataGrid?.loadData();\r\n },\r\n hidden: true,\r\n }}\r\n onSortChanged={() => {\r\n this.dataGrid?.loadData();\r\n }}\r\n onRowDoubleClicked={this.onRowDoubleClicked}\r\n detailPanel={{\r\n defaultWidth: this.getDetailPanelDefaultWidth(),\r\n renderer: this.renderDetailPanel\r\n }}\r\n toolbar={{\r\n toolbarButtons: this.renderToolbarButtons(),\r\n renderToolbar: this.renderToolbar,\r\n }}\r\n rowSelection={this.getRowSelection()}\r\n getRowStyle={this.getRowStyle}\r\n controlPanel={{\r\n renderer: this.renderControlPanel\r\n }}\r\n noRecordsOverlayRenderer={() => <div/>}\r\n filterPanel={this.getExtendedDataGridFilterPanel()}\r\n />\r\n </div>\r\n </div>\r\n )\r\n }\r\n\r\n}"]}
1
+ {"version":3,"file":"abstractListPanel.js","sourceRoot":"","sources":["../../../coreui/abstractListPanel.tsx"],"names":[],"mappings":"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","sourcesContent":["import React from \"react\";\r\nimport ExtendedDataGrid, {ExtendedDataGridProps, GridConfiguration} from \"d2coreui/components/grid/extendedDataGrid\";\r\nimport {DataGridColDef, OnLoadDataCallback} from \"d2coreui/components/grid/dataGrid\";\r\nimport {\r\n GridReadyEvent,\r\n IGetRowsParams,\r\n RowDoubleClickedEvent,\r\n RowModelType,\r\n SelectionChangedEvent\r\n} from \"ag-grid-community\";\r\nimport {Closeable, PageableList} from \"../api/abstractEntityApi\";\r\nimport {Breadcrumb, Button, Drawer, Popover} from \"antd\";\r\nimport i18n from \"d2core/i18n/i18n\";\r\nimport {\r\n BulbOutlined,\r\n CheckCircleOutlined,\r\n CloseCircleOutlined,\r\n CopyOutlined,\r\n DeleteOutlined,\r\n HistoryOutlined,\r\n MoreOutlined,\r\n PlusCircleOutlined,\r\n ProfileOutlined\r\n} from \"@ant-design/icons\";\r\nimport {ModalDialog, ModalDialogMode} from \"d2coreui/components/modal/modalDialog\";\r\nimport AuditableEntity from \"../api/types/auditableEntity\";\r\nimport AdvancedFilteredGrid, {\r\n AdvancedFilteredGridProps,\r\n AdvancedFilteredGridState\r\n} from \"./components/advancedFilter/advancedFilteredGrid\";\r\nimport {GeneralEntityColumn} from \"./components/advancedFilter/advancedFilterColumnDefinitions\";\r\nimport AdvancedFilterButton from \"./components/advancedFilter/advancedFilterButton\";\r\nimport {PanelConfiguration} from \"../core/types/panelConfiguration\";\r\nimport auditEntityRowStyleRules from \"./components/grid/auditEntityRowStyleRules\";\r\nimport TitleWithCodePanel from \"./components/titleWithCodePanel/titleWithCodePanel\";\r\nimport EntityHistoryListPanel from \"./components/history/entityHistoryListPanel\";\r\nimport {AccessRight} from \"../api/types/accessRight\";\r\nimport {ERROR_COLOR, SUCCESS_COLOR} from \"../api/constants/constants\";\r\nimport AbstractEntityConfigPanel from \"./components/editor/abstractEntityConfigPanel\";\r\nimport {DbBoolean} from \"../api/types/dbBoolean\";\r\nimport {ItemType} from \"antd/es/breadcrumb/Breadcrumb\";\r\nimport {createStyles} from \"antd-style\";\r\nimport WithCss from \"d2coreui/components/style/withCss\";\r\nimport ColorTag from \"./components/colorTag/colorTag\";\r\nimport {GridRowStyle} from \"d2coreui/components/grid/cell/tableDefaultRowStyleRules\";\r\n\r\nconst useStyles = createStyles(({css, token}) => {\r\n return {\r\n breadcrumbPanel: css`\r\n border-bottom: 1px solid ${token.colorBorder};\r\n padding: 10px 12px 0;\r\n font-weight: 500;\r\n `\r\n }\r\n});\r\n\r\nexport const DETAIL_PANEL_DEFAULT_WIDTH = 560;\r\nconst MAX_WIDTH_MOBILE = 500;\r\n\r\nexport interface AbstractBreadcrumbItem {\r\n pageName: string\r\n code: string\r\n}\r\n\r\nexport interface AbstractListPanelConfiguration extends PanelConfiguration {\r\n gridConfiguration: GridConfiguration\r\n}\r\n\r\nexport interface AbstractListPanelProps<\r\n T extends AuditableEntity,\r\n C extends AbstractListPanelConfiguration = AbstractListPanelConfiguration\r\n> extends AdvancedFilteredGridProps<T> {\r\n breadcrumbPath?: AbstractBreadcrumbItem[]\r\n\r\n getConfiguration(initialConfiguration: C): C\r\n\r\n onPanelConfigurationChanged(): void\r\n}\r\n\r\nexport interface AbstractListPanelState<\r\n T extends AuditableEntity,\r\n C extends AbstractListPanelConfiguration = AbstractListPanelConfiguration\r\n> extends AdvancedFilteredGridState<T> {\r\n panelConfiguration: C\r\n detailPanelVisible: boolean\r\n modalDetailPanelVisible: boolean\r\n deletedRecordsVisible: boolean\r\n historyModalVisible: boolean\r\n dropdownMenuVisible: boolean\r\n waitingForNewEntity: boolean\r\n waitingForEntityCopy: boolean\r\n quickActionsListVisible: boolean\r\n accessRight: AccessRight\r\n}\r\n\r\nexport abstract class AbstractListPanel<\r\n T extends AuditableEntity,\r\n P extends AbstractListPanelProps<T, C>,\r\n S extends AbstractListPanelState<T, C>,\r\n C extends AbstractListPanelConfiguration = AbstractListPanelConfiguration,\r\n> extends AdvancedFilteredGrid<T, P, S> {\r\n\r\n protected detailPanel: AbstractEntityConfigPanel<any, any> | null = null;\r\n protected entityHistoryListPanel: EntityHistoryListPanel<T> | null = null;\r\n protected refreshListHandler: Closeable | null = null;\r\n private idToSelect: number | undefined = undefined;\r\n\r\n protected constructor(props: Readonly<P>) {\r\n super(props);\r\n\r\n this.onSelectionChanged = this.onSelectionChanged.bind(this);\r\n this.onRowDoubleClicked = this.onRowDoubleClicked.bind(this);\r\n this.onHistoryListPanelSelectionChanged = this.onHistoryListPanelSelectionChanged.bind(this);\r\n this.renderDetailPanel = this.renderDetailPanel.bind(this);\r\n this.renderDetailPanelForHistory = this.renderDetailPanelForHistory.bind(this);\r\n this.renderControlPanel = this.renderControlPanel.bind(this);\r\n this.renderToolbar = this.renderToolbar.bind(this);\r\n }\r\n\r\n protected initialState: Omit<AbstractListPanelState<T, C>, \"panelConfiguration\"> = {\r\n detailPanelVisible: false,\r\n modalDetailPanelVisible: false,\r\n deletedRecordsVisible: false,\r\n historyModalVisible: false,\r\n dropdownMenuVisible: false,\r\n columnDefs: this.getInitialColumnDefs(),\r\n loading: false,\r\n datasource: {\r\n getRows: async (params: IGetRowsParams) => {\r\n if (this.firstLoadedPage) {\r\n let pageableList: PageableList<T>;\r\n if (this.manualReload && params.startRow === 0 && params.endRow === 100) {\r\n this.manualReload = false;\r\n pageableList = this.firstLoadedPage;\r\n } else {\r\n pageableList = await this.getRecords(params.startRow, params.endRow);\r\n }\r\n params.successCallback(pageableList.data, pageableList.totalNumberOfRows);\r\n\r\n setTimeout(() => {\r\n this.setState({selectedData: this.gridApi?.getSelectedRows() ?? []});\r\n\r\n if (this.idToSelect !== undefined && pageableList.data.some(value => value.id === this.idToSelect)) {\r\n const rowNode = this.gridApi?.getRowNode(this.idToSelect.toString());\r\n this.gridApi?.ensureNodeVisible(rowNode);\r\n rowNode?.setSelected(true, true);\r\n this.idToSelect = undefined;\r\n }\r\n }, 200);\r\n } else {\r\n params.successCallback([], 0);\r\n }\r\n }\r\n },\r\n selectedData: [],\r\n waitingForNewEntity: false,\r\n waitingForEntityCopy: false,\r\n quickActionsListVisible: false,\r\n accessRight: AccessRight.NONE,\r\n filterConditions: [],\r\n }\r\n\r\n protected async onLoadData(callback: OnLoadDataCallback): Promise<void> {\r\n await super.onLoadData(callback);\r\n this.subscribeRefreshList();\r\n }\r\n\r\n protected subscribeRefreshList() {\r\n this.refreshListHandler = this.props.api.subscribeRefreshList(() => {\r\n this.gridApi?.refreshInfiniteCache();\r\n })\r\n }\r\n\r\n componentWillUnmount() {\r\n this.refreshListHandler?.close();\r\n }\r\n\r\n protected initialGridConfiguration: GridConfiguration = {\r\n pageSize: -1,\r\n columnSearchVisible: true,\r\n rowStyleRules: auditEntityRowStyleRules(),\r\n defaultRowStyleRules: auditEntityRowStyleRules(),\r\n }\r\n\r\n getPanelConfiguration(): AbstractListPanelConfiguration {\r\n return this.state.panelConfiguration;\r\n }\r\n\r\n onPanelConfigurationChanged(configuration: Partial<AbstractListPanelConfiguration>) {\r\n const panelConfiguration = this.state.panelConfiguration;\r\n Object.assign(panelConfiguration, configuration);\r\n this.setState({panelConfiguration: panelConfiguration}, () => {\r\n this.props.onPanelConfigurationChanged();\r\n });\r\n }\r\n\r\n protected async onRecordsLoaded(): Promise<void> {\r\n const accessRight = await this.props.api.getAccessRight();\r\n this.setState({accessRight: accessRight});\r\n }\r\n\r\n getOnlyValidRecords(): boolean {\r\n return !this.state.deletedRecordsVisible;\r\n }\r\n\r\n updateGrid(entity: T) {\r\n this.setState({modalDetailPanelVisible: false});\r\n this.idToSelect = entity.id;\r\n this.gridApi?.refreshInfiniteCache();\r\n }\r\n\r\n abstract getInitialColumnDefs(): DataGridColDef[];\r\n\r\n abstract renderDetailPanel(): React.ReactElement;\r\n\r\n abstract renderDetailPanelForHistory(entity: T | undefined, differences: string[]): React.ReactElement;\r\n\r\n protected focusFieldInDetailPanel(): void {\r\n this.detailPanel?.focusFirstField();\r\n }\r\n\r\n protected getAuditColumnDefs(): DataGridColDef[] {\r\n const auditColumnParams: Partial<DataGridColDef> = {\r\n group: i18n(\"Audit\"),\r\n initialHide: true,\r\n }\r\n\r\n return [\r\n this.getDateTimeColumn(GeneralEntityColumn.CREATE_DATE, {headerName: i18n(\"Date of Insert\"), ...auditColumnParams}),\r\n this.getStringColumn(GeneralEntityColumn.CREATED_BY, {headerName: i18n(\"Created By\"), ...auditColumnParams}),\r\n this.getDateTimeColumn(GeneralEntityColumn.MODIFY_DATE, {headerName: i18n(\"Modify Date\"), ...auditColumnParams}),\r\n this.getStringColumn(GeneralEntityColumn.MODIFIED_BY, {headerName: i18n(\"Modified By\"), ...auditColumnParams}),\r\n this.getDbBooleanColumn(GeneralEntityColumn.VALIDITY, {headerName: i18n(\"Valid\"), ...auditColumnParams}),\r\n ]\r\n }\r\n\r\n protected onCloseDetailPanel() {\r\n this.setState({\r\n selectedData: this.gridApi?.getSelectedRows() ?? [],\r\n detailPanelVisible: false,\r\n modalDetailPanelVisible: false\r\n });\r\n this.dataGrid?.showDetailPanel(false);\r\n }\r\n\r\n protected onRowDoubleClicked(event: RowDoubleClickedEvent) {\r\n this.setState({\r\n selectedData: [event.data],\r\n detailPanelVisible: true,\r\n modalDetailPanelVisible: this.isMobile(),\r\n });\r\n\r\n if (!this.isMobile()) {\r\n this.dataGrid?.showDetailPanel(true);\r\n }\r\n }\r\n\r\n protected getDetailPanelDefaultWidth(): number {\r\n return DETAIL_PANEL_DEFAULT_WIDTH;\r\n }\r\n\r\n protected getExtendedDataGridFilterPanel(): ExtendedDataGridProps[\"filterPanel\"] | undefined {\r\n return undefined;\r\n }\r\n\r\n onSelectionChanged(event: SelectionChangedEvent) {\r\n const selectedRows = event.api.getSelectedRows();\r\n if (selectedRows.length > 0) {\r\n this.setState({selectedData: selectedRows});\r\n } else {\r\n this.setState({selectedData: [], detailPanelVisible: false});\r\n this.dataGrid?.showDetailPanel(false);\r\n }\r\n }\r\n\r\n protected adaptNewRecord(newRecord: T) {\r\n newRecord;\r\n }\r\n\r\n protected getDataToDelete() {\r\n return this.state.selectedData.filter(data => data.ano_platny === DbBoolean.TRUE);\r\n }\r\n\r\n protected getDataToRecover() {\r\n return this.state.selectedData.filter(data => data.ano_platny === DbBoolean.FALSE);\r\n }\r\n\r\n protected isValidityChangeDisabled(): boolean {\r\n return this.state.loading || this.state.selectedData[0]?.id === undefined;\r\n }\r\n\r\n protected renderValidityButton(): React.ReactNode | undefined {\r\n const operationDisabled = this.isValidityChangeDisabled();\r\n\r\n const dataToDelete = this.getDataToDelete();\r\n const dataToRecover = this.getDataToRecover();\r\n\r\n let allowedAction: \"delete\" | \"recover\" | \"none\" = \"none\";\r\n if (dataToDelete.length > 0) {\r\n allowedAction = \"delete\";\r\n } else if (dataToRecover.length > 0) {\r\n allowedAction = \"recover\";\r\n } else {\r\n allowedAction = \"none\";\r\n }\r\n\r\n return (\r\n <Button\r\n style={{width: 44}}\r\n title={allowedAction === \"recover\" ? i18n(\"Mark Record As Valid\") : i18n(\"Mark Record As Deleted\")}\r\n disabled={operationDisabled || allowedAction === \"none\"}\r\n icon={allowedAction === \"recover\" ? <CheckCircleOutlined/> : <CloseCircleOutlined/>}\r\n onClick={() => {\r\n ModalDialog.delete({\r\n mode: ModalDialogMode.YES_NO,\r\n title: <span style={{whiteSpace: \"nowrap\"}}>\r\n {allowedAction === \"recover\" ? i18n(\"Mark %n records as valid?\", dataToRecover.length) : i18n(\"Mark %n records as deleted?\", dataToDelete.length)}\r\n </span>,\r\n icon:\r\n allowedAction === \"delete\" ?\r\n <CloseCircleOutlined style={{color: ERROR_COLOR}}/>\r\n :\r\n <CheckCircleOutlined style={{color: SUCCESS_COLOR}}/>,\r\n onOk: async () => {\r\n for (const data of allowedAction === \"delete\" ? dataToDelete : dataToRecover) {\r\n const isOk = await this.props.api.setValidity(data, allowedAction === \"recover\");\r\n if (!isOk) {\r\n return;\r\n }\r\n }\r\n this.gridApi?.refreshInfiniteCache();\r\n }\r\n });\r\n }}\r\n />\r\n );\r\n }\r\n\r\n protected renderAdvancedFilterButton(): React.ReactNode | undefined {\r\n const advancedFilterConfig = this.getAdvancedFilterConfig();\r\n\r\n if (advancedFilterConfig) {\r\n return (\r\n <AdvancedFilterButton\r\n advancedFilterApi={this.props.advancedFilterApi}\r\n listName={advancedFilterConfig.listName}\r\n columnDefinitions={this.getAdvancedFilterColumnDefinitions()}\r\n filterConditions={this.state.filterConditions}\r\n onApplyFilter={this.onApplyFilter}\r\n onMenuItemClicked={() => {\r\n this.setState({dropdownMenuVisible: false});\r\n }}\r\n />\r\n );\r\n }\r\n\r\n return undefined;\r\n }\r\n\r\n protected isMobile(): boolean {\r\n return window.innerWidth <= MAX_WIDTH_MOBILE;\r\n }\r\n\r\n protected renderCopyButton(): React.ReactNode | undefined {\r\n const disabled = this.state.loading || this.state.selectedData.length !== 1 || this.state.selectedData[0].id === undefined;\r\n\r\n return (\r\n <Button\r\n style={{width: 44}}\r\n title={i18n(\"Create Copy\")}\r\n disabled={disabled}\r\n loading={this.state.waitingForEntityCopy}\r\n icon={<CopyOutlined/>}\r\n onClick={async () => {\r\n this.setState({waitingForEntityCopy: true});\r\n const newRecord = await this.props.api.createNewEntity(this.state.selectedData[0]);\r\n this.adaptNewRecord(newRecord);\r\n this.setState({selectedData: [newRecord], dropdownMenuVisible: false, waitingForEntityCopy: false});\r\n if (this.isMobile()) {\r\n this.setState({modalDetailPanelVisible: true})\r\n } else {\r\n this.setState({detailPanelVisible: true});\r\n this.dataGrid?.showDetailPanel(true);\r\n setTimeout(() => this.focusFieldInDetailPanel());\r\n }\r\n }}\r\n />\r\n );\r\n }\r\n\r\n protected renderNewRecordButton(): React.ReactNode | undefined {\r\n return (\r\n <Button\r\n style={{width: 44}}\r\n title={i18n(\"New Record\")}\r\n disabled={this.state.loading}\r\n loading={this.state.waitingForNewEntity}\r\n icon={<PlusCircleOutlined/>}\r\n onClick={() => {\r\n this.gridApi?.deselectAll();\r\n setTimeout(async () => {\r\n this.setState({waitingForNewEntity: true});\r\n const newRecord = await this.props.api.createNewEntity();\r\n this.adaptNewRecord(newRecord);\r\n this.setState({selectedData: [newRecord], waitingForNewEntity: false});\r\n if (this.isMobile()) {\r\n this.setState({modalDetailPanelVisible: true})\r\n } else {\r\n this.setState({detailPanelVisible: true});\r\n this.dataGrid?.showDetailPanel(true);\r\n this.focusFieldInDetailPanel();\r\n }\r\n })\r\n }}\r\n />\r\n );\r\n }\r\n\r\n protected renderDetailPanelButton(): React.ReactNode | undefined {\r\n const disabled = this.state.loading || this.state.selectedData.length !== 1 || this.state.selectedData[0].id === undefined;\r\n\r\n return (\r\n <Button\r\n style={{width: 44}}\r\n type={this.state.detailPanelVisible ? \"primary\" : \"default\"}\r\n title={i18n(this.state.detailPanelVisible ? \"Hide Detail\" : \"Show Detail\")}\r\n disabled={disabled}\r\n icon={<ProfileOutlined/>}\r\n onClick={() => {\r\n if (this.isMobile()) {\r\n this.setState({modalDetailPanelVisible: true})\r\n } else {\r\n const detailPanelVisible = this.state.detailPanelVisible;\r\n this.setState({detailPanelVisible: !detailPanelVisible});\r\n this.dataGrid?.showDetailPanel(!detailPanelVisible);\r\n }\r\n }}\r\n />\r\n )\r\n }\r\n\r\n protected renderTrashButton(): React.ReactNode | undefined {\r\n return (\r\n <Button\r\n style={{width: 44}}\r\n type={this.state.deletedRecordsVisible ? \"primary\" : \"default\"}\r\n title={i18n(this.state.deletedRecordsVisible ? \"Hide Deleted Records\" : \"Show Deleted Records\")}\r\n icon={<DeleteOutlined/>}\r\n onClick={() => {\r\n this.setState({deletedRecordsVisible: !this.state.deletedRecordsVisible}, () => {\r\n this.gridApi?.refreshInfiniteCache();\r\n });\r\n }}\r\n />\r\n )\r\n }\r\n\r\n protected renderShortcutButton(): React.ReactNode | undefined {\r\n if (this.renderShortcutPanel()) {\r\n const disabled = this.state.loading || this.state.selectedData.length !== 1 || this.state.selectedData[0].id === undefined;\r\n\r\n return (\r\n <Button\r\n style={{width: 44}}\r\n title={i18n(\"Quick Actions\")}\r\n disabled={disabled}\r\n icon={<BulbOutlined/>}\r\n onClick={() => {\r\n this.setState({quickActionsListVisible: true, dropdownMenuVisible: false});\r\n }}\r\n />\r\n )\r\n }\r\n return undefined;\r\n }\r\n\r\n protected renderAdditionalButtons(): React.ReactNode | undefined {\r\n return undefined;\r\n }\r\n\r\n protected renderHistoryButton(): React.ReactNode | undefined {\r\n return (\r\n <Button\r\n disabled={this.state.loading || this.state.selectedData.length !== 1 || this.state.selectedData[0].id === undefined}\r\n onClick={() => {\r\n this.setState({historyModalVisible: true});\r\n }}\r\n >\r\n <HistoryOutlined/>\r\n </Button>\r\n );\r\n }\r\n\r\n protected renderShortcutPanel(): React.ReactNode | undefined {\r\n return undefined;\r\n }\r\n\r\n protected renderShortcutDrawer() {\r\n return (\r\n <Drawer\r\n title={<TitleWithCodePanel title={this.getPageTitle()} code={this.getBreadcrumbCode() ?? \"\"}/>}\r\n styles={{body: {padding: 0}}}\r\n placement=\"top\"\r\n height={240}\r\n onClose={() => {\r\n this.setState({quickActionsListVisible: false})\r\n }}\r\n open={this.state.quickActionsListVisible}\r\n >\r\n {this.renderShortcutPanel()}\r\n </Drawer>\r\n );\r\n }\r\n\r\n protected renderToolbar(originalSearchBar: React.ReactElement): React.ReactElement {\r\n return originalSearchBar;\r\n }\r\n\r\n renderToolbarButtons() {\r\n if (this.isMobile()) {\r\n return (\r\n <>\r\n <Popover\r\n open={this.state.dropdownMenuVisible}\r\n onOpenChange={visible => {\r\n this.setState({dropdownMenuVisible: visible})\r\n }}\r\n content={\r\n <>\r\n <div>{this.renderAdvancedFilterButton()}</div>\r\n <div>{this.renderCopyButton()}</div>\r\n <div>{this.renderValidityButton()}</div>\r\n <div>{this.renderTrashButton()}</div>\r\n <div>{this.renderShortcutButton()}</div>\r\n <div>{this.renderAdditionalButtons()}</div>\r\n </>\r\n }\r\n trigger=\"click\"\r\n >\r\n <Button>\r\n <MoreOutlined/>\r\n </Button>\r\n </Popover>\r\n {this.renderNewRecordButton()}\r\n {this.renderDetailPanelButton()}\r\n </>\r\n )\r\n } else {\r\n return <>\r\n {this.renderAdvancedFilterButton()}\r\n {this.renderNewRecordButton()}\r\n {this.renderCopyButton()}\r\n {this.renderDetailPanelButton()}\r\n {this.renderValidityButton()}\r\n {this.renderTrashButton()}\r\n {this.renderHistoryButton()}\r\n {this.renderShortcutButton()}\r\n {this.renderAdditionalButtons()}\r\n </>\r\n }\r\n }\r\n\r\n protected renderControlPanel(): JSX.Element | null {\r\n return null;\r\n }\r\n\r\n protected getRowSelection(): \"single\" | \"multiple\" {\r\n return \"multiple\";\r\n }\r\n\r\n protected getRowModelType(): RowModelType {\r\n return \"infinite\";\r\n }\r\n\r\n protected getRowData(): T[] | undefined {\r\n return undefined;\r\n }\r\n\r\n protected getRowStyle(params: any): GridRowStyle | undefined {\r\n params;\r\n return undefined;\r\n }\r\n\r\n abstract getPageTitle(): string\r\n\r\n protected getLoadedData(): T[] {\r\n const data: T[] = [];\r\n this.gridApi?.forEachNode(value => data.push(value.data));\r\n\r\n return data;\r\n }\r\n\r\n private renderDetailPanelModalDialog() {\r\n return (\r\n <ModalDialog\r\n className=\"modal-no-header full-screen-modal\"\r\n mode={ModalDialogMode.NO_BUTTONS}\r\n closable={false}\r\n open={this.state.modalDetailPanelVisible}\r\n styles={{body: {padding: 0}}}\r\n initialWidth={window.innerWidth}\r\n initialHeight={window.innerHeight}\r\n forceRender\r\n >\r\n {this.renderDetailPanel()}\r\n </ModalDialog>\r\n )\r\n }\r\n\r\n protected onHistoryListPanelSelectionChanged() {\r\n }\r\n\r\n protected isEqualCustomizerForHistory(key: string, value: any, other: any): boolean | undefined {\r\n key;\r\n value;\r\n other;\r\n return undefined;\r\n }\r\n\r\n private renderHistoryModalDialog(): React.ReactElement {\r\n const selectedEntity = this.state.selectedData[0];\r\n\r\n return (\r\n <ModalDialog\r\n styles={{body: {padding: 0}}}\r\n mode={ModalDialogMode.NO_BUTTONS}\r\n open={this.state.historyModalVisible}\r\n onCancel={() => this.setState({historyModalVisible: false})}\r\n title={<TitleWithCodePanel title={i18n(\"History\")} code={selectedEntity?.code ?? \"\"}/>}\r\n initialWidth={window.innerWidth * 0.99}\r\n initialHeight={window.innerHeight * 0.95}\r\n >\r\n <EntityHistoryListPanel\r\n ref={component => this.entityHistoryListPanel = component}\r\n api={this.props.api}\r\n entity={selectedEntity}\r\n renderDetail={this.renderDetailPanelForHistory}\r\n detailPanelWidth={this.getDetailPanelDefaultWidth() * 2}\r\n onSelectionChanged={this.onHistoryListPanelSelectionChanged}\r\n isEqualCustomizer={this.isEqualCustomizerForHistory}\r\n />\r\n </ModalDialog>\r\n );\r\n }\r\n\r\n private renderBreadcrumbItem(pageName: React.ReactNode, code?: string): ItemType {\r\n return {\r\n title: <>\r\n {pageName}\r\n {code && <ColorTag style={{margin: \"0 0 0 4px\", fontSize: 14}}>{code}</ColorTag>}\r\n </>,\r\n }\r\n }\r\n\r\n private renderBreadcrumb() {\r\n const pageTitle = this.getPageTitle();\r\n\r\n if (pageTitle) {\r\n const breadcrumbCode = this.getBreadcrumbCode();\r\n return (\r\n <Breadcrumb\r\n style={{paddingBottom: 10, fontSize: 20, overflowX: \"auto\"}}\r\n items={\r\n [\r\n ...this.props.breadcrumbPath?.map(value => this.renderBreadcrumbItem(value.pageName, value.code)) ?? [],\r\n this.renderBreadcrumbItem(pageTitle, breadcrumbCode),\r\n ]\r\n }\r\n />\r\n );\r\n }\r\n return undefined;\r\n }\r\n\r\n protected getBreadcrumbCode() {\r\n return this.state.selectedData[0]?.code ?? undefined;\r\n }\r\n\r\n protected getExtendedBreadcrumbPath() {\r\n return [\r\n ...this.props.breadcrumbPath ?? [],\r\n {pageName: this.getPageTitle() ?? \"\", code: this.getBreadcrumbCode() ?? \"\"}\r\n ]\r\n }\r\n\r\n render() {\r\n return (\r\n <div style={{display: \"flex\", flexDirection: \"column\", height: \"100%\"}}>\r\n <WithCss useStyles={useStyles}>{(css) =>\r\n <div className={css.styles.breadcrumbPanel}>\r\n {this.renderBreadcrumb()}\r\n </div>\r\n }</WithCss>\r\n <div style={{position: \"relative\", height: \"100%\"}}>\r\n {this.renderHistoryModalDialog()}\r\n {this.renderDetailPanelModalDialog()}\r\n {this.renderShortcutDrawer()}\r\n <ExtendedDataGrid<T>\r\n tablePanelStyle={{\r\n marginTop: 8,\r\n }}\r\n panelStyle={{\r\n paddingTop: 8,\r\n }}\r\n ref={(dataGrid) => {\r\n this.dataGrid = dataGrid;\r\n }}\r\n defaultGridConfiguration={this.state.panelConfiguration.gridConfiguration}\r\n onChangeConfiguration={gridConfiguration => {\r\n this.onPanelConfigurationChanged({gridConfiguration: gridConfiguration});\r\n }}\r\n onGridReady={(params: GridReadyEvent) => {\r\n this.gridApi = params.api;\r\n }}\r\n rowModelType={this.getRowModelType()}\r\n rowData={this.getRowData()}\r\n datasource={this.state.datasource}\r\n onLoadData={this.onLoadData}\r\n onSelectionChanged={this.onSelectionChanged}\r\n columnDefs={this.state.columnDefs}\r\n search={{\r\n onSearch: () => {\r\n this.dataGrid?.loadData();\r\n },\r\n hidden: true,\r\n }}\r\n onSortChanged={() => {\r\n this.dataGrid?.loadData();\r\n }}\r\n onRowDoubleClicked={this.onRowDoubleClicked}\r\n detailPanel={{\r\n defaultWidth: this.getDetailPanelDefaultWidth(),\r\n renderer: this.renderDetailPanel\r\n }}\r\n toolbar={{\r\n toolbarButtons: this.renderToolbarButtons(),\r\n renderToolbar: this.renderToolbar,\r\n }}\r\n rowSelection={this.getRowSelection()}\r\n getRowStyle={this.getRowStyle}\r\n controlPanel={{\r\n renderer: this.renderControlPanel\r\n }}\r\n noRecordsOverlayRenderer={() => <div/>}\r\n filterPanel={this.getExtendedDataGridFilterPanel()}\r\n />\r\n </div>\r\n </div>\r\n )\r\n }\r\n\r\n}"]}
@@ -78,7 +78,6 @@ export default class AdvancedFilterButton extends React.Component {
78
78
  },
79
79
  {
80
80
  key: "destroy",
81
- style: { color: filterNotPresented ? "rgba(0, 0, 0, 0.25)" : undefined },
82
81
  danger: true,
83
82
  disabled: filterNotPresented,
84
83
  icon: React.createElement(CloseCircleOutlined, null),
@@ -1 +1 @@
1
- {"version":3,"file":"advancedFilterButton.js","sourceRoot":"","sources":["../../../../../coreui/components/advancedFilter/advancedFilterButton.tsx"],"names":[],"mappings":"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","sourcesContent":["import React from \"react\";\r\nimport AdvancedFilterConditionListModalDialog from \"./conditionList/advancedFilterConditionListModalDialog\";\r\nimport {AdvancedFilterApi, AdvancedFilterCondition,} from \"../../../api/advancedFilterApi\";\r\nimport {Button, Dropdown} from \"antd\";\r\nimport {\r\n CloseCircleOutlined,\r\n DownloadOutlined,\r\n EditOutlined,\r\n FilterOutlined,\r\n PlusCircleOutlined,\r\n SaveOutlined\r\n} from \"@ant-design/icons\";\r\nimport i18n from \"d2core/i18n/i18n\";\r\nimport FilterSaveModalDialog from \"./filterSave/filterSaveModalDialog\";\r\nimport AdvancedFilterListModalDialog from \"./filterList/advancedFilterListModalDialog\";\r\nimport AdvancedFilterUtils from \"./advancedFilterUtils\";\r\nimport {AdvancedFilterColumnDefinition} from \"../../../api/types/advancedFilter\";\r\n\r\ninterface Props {\r\n advancedFilterApi: AdvancedFilterApi\r\n listName: string\r\n columnDefinitions: AdvancedFilterColumnDefinition[]\r\n filterConditions: AdvancedFilterCondition[]\r\n\r\n onApplyFilter(filterConditions: AdvancedFilterCondition[]): void\r\n\r\n onMenuItemClicked?(): void\r\n}\r\n\r\ninterface State {\r\n conditionListModalDialogVisible: boolean\r\n filterSaveModalDialogVisible: boolean\r\n filterListModalDialogVisible: boolean\r\n\r\n saving: boolean\r\n}\r\n\r\nexport default class AdvancedFilterButton extends React.Component<Props, State> {\r\n constructor(props: Readonly<Props>) {\r\n super(props);\r\n props.advancedFilterApi.entityListName = props.listName;\r\n\r\n this.state = {\r\n conditionListModalDialogVisible: false,\r\n filterSaveModalDialogVisible: false,\r\n filterListModalDialogVisible: false,\r\n\r\n saving: false,\r\n }\r\n }\r\n\r\n private applyFilterConditions(filterConditions: AdvancedFilterCondition[]) {\r\n this.props.onApplyFilter(filterConditions);\r\n }\r\n\r\n private renderConditionListModalDialog() {\r\n return (\r\n <AdvancedFilterConditionListModalDialog\r\n visible={this.state.conditionListModalDialogVisible}\r\n columnDefinitions={this.props.columnDefinitions}\r\n filterConditions={this.props.filterConditions}\r\n onOk={filterConditions => {\r\n this.applyFilterConditions(filterConditions);\r\n this.setState({conditionListModalDialogVisible: false});\r\n }}\r\n onCancel={() => {\r\n this.setState({conditionListModalDialogVisible: false})\r\n }}\r\n />\r\n );\r\n }\r\n\r\n private renderFilterSaveModalDialog() {\r\n return (\r\n <FilterSaveModalDialog\r\n visible={this.state.filterSaveModalDialogVisible}\r\n saving={this.state.saving}\r\n onOk={async filterName => {\r\n this.setState({saving: true});\r\n const filter = await this.props.advancedFilterApi.createNewEntity();\r\n filter.code = filterName;\r\n filter.name = filterName;\r\n filter.filterConditions = AdvancedFilterUtils.serializeConditionValues(this.props.filterConditions);\r\n\r\n const savedEntity = await this.props.advancedFilterApi.saveEntity(filter);\r\n\r\n if (savedEntity) {\r\n this.setState({\r\n filterSaveModalDialogVisible: false,\r\n saving: false,\r\n });\r\n }\r\n }}\r\n onCancel={() => {\r\n this.setState({filterSaveModalDialogVisible: false});\r\n }}\r\n />\r\n );\r\n }\r\n\r\n private renderFilterListModalDialog() {\r\n return (\r\n <AdvancedFilterListModalDialog\r\n api={this.props.advancedFilterApi}\r\n advancedFilterApi={this.props.advancedFilterApi}\r\n visible={this.state.filterListModalDialogVisible}\r\n multiSelect\r\n onItemsSelected={async selectedItems => {\r\n const selectedFilter = selectedItems[0];\r\n if (selectedFilter) {\r\n const filterConditions = await this.props.advancedFilterApi.getFilterConditions(selectedFilter.id);\r\n const parsedFilterConditions = AdvancedFilterUtils.parseConditionValues(filterConditions);\r\n this.applyFilterConditions(parsedFilterConditions);\r\n this.setState({filterListModalDialogVisible: false});\r\n }\r\n }}\r\n onCancel={() => {\r\n this.setState({filterListModalDialogVisible: false});\r\n }}\r\n />\r\n );\r\n }\r\n\r\n render() {\r\n const filterNotPresented = this.props.filterConditions.length === 0;\r\n\r\n return (\r\n <div>\r\n {this.renderConditionListModalDialog()}\r\n {this.renderFilterSaveModalDialog()}\r\n {this.renderFilterListModalDialog()}\r\n <Dropdown\r\n trigger={[\"click\"]}\r\n menu={{\r\n items: [\r\n {\r\n key: \"new\",\r\n icon: filterNotPresented ? <PlusCircleOutlined/> : <EditOutlined/>,\r\n label: i18n(filterNotPresented ? \"New Filter\" : \"Edit Filter\"),\r\n onClick: () => {\r\n this.setState({conditionListModalDialogVisible: true});\r\n this.props.onMenuItemClicked?.();\r\n }\r\n },\r\n {\r\n key: \"destroy\",\r\n style: {color: filterNotPresented ? \"rgba(0, 0, 0, 0.25)\" : undefined},\r\n danger: true,\r\n disabled: filterNotPresented,\r\n icon: <CloseCircleOutlined/>,\r\n label: i18n(\"Deactivate Filter\"),\r\n onClick: () => {\r\n this.props.onApplyFilter([]);\r\n this.props.onMenuItemClicked?.();\r\n }\r\n },\r\n {\r\n key: \"save\",\r\n disabled: filterNotPresented,\r\n icon: <SaveOutlined/>,\r\n label: i18n(\"Save Filter\"),\r\n onClick: () => {\r\n this.setState({filterSaveModalDialogVisible: true});\r\n this.props.onMenuItemClicked?.();\r\n }\r\n },\r\n {\r\n key: \"load\",\r\n icon: <DownloadOutlined/>,\r\n label: i18n(\"Load Filter\"),\r\n onClick: () => {\r\n this.setState({filterListModalDialogVisible: true});\r\n this.props.onMenuItemClicked?.();\r\n }\r\n },\r\n ]\r\n }}\r\n >\r\n <Button\r\n style={{width: 44}}\r\n type={this.props.filterConditions.length !== 0 ? \"primary\" : undefined}\r\n icon={<FilterOutlined/>}\r\n />\r\n </Dropdown>\r\n </div>\r\n );\r\n }\r\n\r\n}"]}
1
+ {"version":3,"file":"advancedFilterButton.js","sourceRoot":"","sources":["../../../../../coreui/components/advancedFilter/advancedFilterButton.tsx"],"names":[],"mappings":"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","sourcesContent":["import React from \"react\";\r\nimport AdvancedFilterConditionListModalDialog from \"./conditionList/advancedFilterConditionListModalDialog\";\r\nimport {AdvancedFilterApi, AdvancedFilterCondition,} from \"../../../api/advancedFilterApi\";\r\nimport {Button, Dropdown} from \"antd\";\r\nimport {\r\n CloseCircleOutlined,\r\n DownloadOutlined,\r\n EditOutlined,\r\n FilterOutlined,\r\n PlusCircleOutlined,\r\n SaveOutlined\r\n} from \"@ant-design/icons\";\r\nimport i18n from \"d2core/i18n/i18n\";\r\nimport FilterSaveModalDialog from \"./filterSave/filterSaveModalDialog\";\r\nimport AdvancedFilterListModalDialog from \"./filterList/advancedFilterListModalDialog\";\r\nimport AdvancedFilterUtils from \"./advancedFilterUtils\";\r\nimport {AdvancedFilterColumnDefinition} from \"../../../api/types/advancedFilter\";\r\n\r\ninterface Props {\r\n advancedFilterApi: AdvancedFilterApi\r\n listName: string\r\n columnDefinitions: AdvancedFilterColumnDefinition[]\r\n filterConditions: AdvancedFilterCondition[]\r\n\r\n onApplyFilter(filterConditions: AdvancedFilterCondition[]): void\r\n\r\n onMenuItemClicked?(): void\r\n}\r\n\r\ninterface State {\r\n conditionListModalDialogVisible: boolean\r\n filterSaveModalDialogVisible: boolean\r\n filterListModalDialogVisible: boolean\r\n\r\n saving: boolean\r\n}\r\n\r\nexport default class AdvancedFilterButton extends React.Component<Props, State> {\r\n constructor(props: Readonly<Props>) {\r\n super(props);\r\n props.advancedFilterApi.entityListName = props.listName;\r\n\r\n this.state = {\r\n conditionListModalDialogVisible: false,\r\n filterSaveModalDialogVisible: false,\r\n filterListModalDialogVisible: false,\r\n\r\n saving: false,\r\n }\r\n }\r\n\r\n private applyFilterConditions(filterConditions: AdvancedFilterCondition[]) {\r\n this.props.onApplyFilter(filterConditions);\r\n }\r\n\r\n private renderConditionListModalDialog() {\r\n return (\r\n <AdvancedFilterConditionListModalDialog\r\n visible={this.state.conditionListModalDialogVisible}\r\n columnDefinitions={this.props.columnDefinitions}\r\n filterConditions={this.props.filterConditions}\r\n onOk={filterConditions => {\r\n this.applyFilterConditions(filterConditions);\r\n this.setState({conditionListModalDialogVisible: false});\r\n }}\r\n onCancel={() => {\r\n this.setState({conditionListModalDialogVisible: false})\r\n }}\r\n />\r\n );\r\n }\r\n\r\n private renderFilterSaveModalDialog() {\r\n return (\r\n <FilterSaveModalDialog\r\n visible={this.state.filterSaveModalDialogVisible}\r\n saving={this.state.saving}\r\n onOk={async filterName => {\r\n this.setState({saving: true});\r\n const filter = await this.props.advancedFilterApi.createNewEntity();\r\n filter.code = filterName;\r\n filter.name = filterName;\r\n filter.filterConditions = AdvancedFilterUtils.serializeConditionValues(this.props.filterConditions);\r\n\r\n const savedEntity = await this.props.advancedFilterApi.saveEntity(filter);\r\n\r\n if (savedEntity) {\r\n this.setState({\r\n filterSaveModalDialogVisible: false,\r\n saving: false,\r\n });\r\n }\r\n }}\r\n onCancel={() => {\r\n this.setState({filterSaveModalDialogVisible: false});\r\n }}\r\n />\r\n );\r\n }\r\n\r\n private renderFilterListModalDialog() {\r\n return (\r\n <AdvancedFilterListModalDialog\r\n api={this.props.advancedFilterApi}\r\n advancedFilterApi={this.props.advancedFilterApi}\r\n visible={this.state.filterListModalDialogVisible}\r\n multiSelect\r\n onItemsSelected={async selectedItems => {\r\n const selectedFilter = selectedItems[0];\r\n if (selectedFilter) {\r\n const filterConditions = await this.props.advancedFilterApi.getFilterConditions(selectedFilter.id);\r\n const parsedFilterConditions = AdvancedFilterUtils.parseConditionValues(filterConditions);\r\n this.applyFilterConditions(parsedFilterConditions);\r\n this.setState({filterListModalDialogVisible: false});\r\n }\r\n }}\r\n onCancel={() => {\r\n this.setState({filterListModalDialogVisible: false});\r\n }}\r\n />\r\n );\r\n }\r\n\r\n render() {\r\n const filterNotPresented = this.props.filterConditions.length === 0;\r\n\r\n return (\r\n <div>\r\n {this.renderConditionListModalDialog()}\r\n {this.renderFilterSaveModalDialog()}\r\n {this.renderFilterListModalDialog()}\r\n <Dropdown\r\n trigger={[\"click\"]}\r\n menu={{\r\n items: [\r\n {\r\n key: \"new\",\r\n icon: filterNotPresented ? <PlusCircleOutlined/> : <EditOutlined/>,\r\n label: i18n(filterNotPresented ? \"New Filter\" : \"Edit Filter\"),\r\n onClick: () => {\r\n this.setState({conditionListModalDialogVisible: true});\r\n this.props.onMenuItemClicked?.();\r\n }\r\n },\r\n {\r\n key: \"destroy\",\r\n danger: true,\r\n disabled: filterNotPresented,\r\n icon: <CloseCircleOutlined/>,\r\n label: i18n(\"Deactivate Filter\"),\r\n onClick: () => {\r\n this.props.onApplyFilter([]);\r\n this.props.onMenuItemClicked?.();\r\n }\r\n },\r\n {\r\n key: \"save\",\r\n disabled: filterNotPresented,\r\n icon: <SaveOutlined/>,\r\n label: i18n(\"Save Filter\"),\r\n onClick: () => {\r\n this.setState({filterSaveModalDialogVisible: true});\r\n this.props.onMenuItemClicked?.();\r\n }\r\n },\r\n {\r\n key: \"load\",\r\n icon: <DownloadOutlined/>,\r\n label: i18n(\"Load Filter\"),\r\n onClick: () => {\r\n this.setState({filterListModalDialogVisible: true});\r\n this.props.onMenuItemClicked?.();\r\n }\r\n },\r\n ]\r\n }}\r\n >\r\n <Button\r\n style={{width: 44}}\r\n type={this.props.filterConditions.length !== 0 ? \"primary\" : undefined}\r\n icon={<FilterOutlined/>}\r\n />\r\n </Dropdown>\r\n </div>\r\n );\r\n }\r\n\r\n}"]}
@@ -1,5 +1,5 @@
1
1
  import React from "react";
2
- import { Button, Card, Col, Input, Popover, Row, Space } from "antd";
2
+ import { Button, Col, Input, Popover, Row, Space } from "antd";
3
3
  import i18n from "d2core/i18n/i18n";
4
4
  import AdvancedFilterOperatorSelect from "../components/advancedFilterOperatorSelect";
5
5
  import AdvancedFilterValueInput from "../components/advancedFilterValueInput";
@@ -49,28 +49,27 @@ export default class AdvancedFilterFloatingColumnComponent extends React.Compone
49
49
  });
50
50
  }
51
51
  this.setState({ visible: visible });
52
- }, color: "#F5F7F7", content: React.createElement(Card, { size: "small", styles: { body: { padding: 0, backgroundColor: "#F5F7F7" } } },
53
- React.createElement(Space, { style: { width: 240 }, direction: "vertical" },
54
- React.createElement(AdvancedFilterOperatorSelect, { operator: editedOperator, value: editedValue, valueType: this.props.columnDefinition.valueType, onChange: (operator, value) => {
55
- this.setState({ editedOperator: operator, editedValue: value });
56
- } }),
57
- React.createElement(AdvancedFilterValueInput, { ref: instance => this.advancedFilterValueInput = instance, operator: editedOperator, editedValue: editedValue, columnDefinition: this.props.columnDefinition, onPressEnter: (isCtrl, isAlt) => {
58
- if (!conditionValueInvalid) {
59
- if (isCtrl) {
60
- this.onAddCondition();
61
- }
62
- else if (isAlt) {
63
- this.onSetCondition();
64
- }
52
+ }, content: React.createElement(Space, { style: { width: 240 }, direction: "vertical" },
53
+ React.createElement(AdvancedFilterOperatorSelect, { operator: editedOperator, value: editedValue, valueType: this.props.columnDefinition.valueType, onChange: (operator, value) => {
54
+ this.setState({ editedOperator: operator, editedValue: value });
55
+ } }),
56
+ React.createElement(AdvancedFilterValueInput, { ref: instance => this.advancedFilterValueInput = instance, operator: editedOperator, editedValue: editedValue, columnDefinition: this.props.columnDefinition, onPressEnter: (isCtrl, isAlt) => {
57
+ if (!conditionValueInvalid) {
58
+ if (isCtrl) {
59
+ this.onAddCondition();
65
60
  }
66
- }, onChange: value => {
67
- this.setState({ editedValue: value });
68
- } }),
69
- React.createElement(Row, { gutter: 8 },
70
- React.createElement(Col, { span: 12 },
71
- React.createElement(Button, { title: "Ctrl + Enter", disabled: conditionValueInvalid, size: "small", block: true, onClick: this.onAddCondition }, i18n("Add"))),
72
- React.createElement(Col, { span: 12 },
73
- React.createElement(Button, { title: "Alt + Enter", disabled: conditionValueInvalid, size: "small", block: true, type: "primary", onClick: this.onSetCondition }, i18n("Set")))))) },
61
+ else if (isAlt) {
62
+ this.onSetCondition();
63
+ }
64
+ }
65
+ }, onChange: value => {
66
+ this.setState({ editedValue: value });
67
+ } }),
68
+ React.createElement(Row, { gutter: 8 },
69
+ React.createElement(Col, { span: 12 },
70
+ React.createElement(Button, { title: "Ctrl + Enter", disabled: conditionValueInvalid, size: "small", block: true, onClick: this.onAddCondition }, i18n("Add"))),
71
+ React.createElement(Col, { span: 12 },
72
+ React.createElement(Button, { title: "Alt + Enter", disabled: conditionValueInvalid, size: "small", block: true, type: "primary", onClick: this.onSetCondition }, i18n("Set"))))) },
74
73
  React.createElement(Input, { style: { marginTop: 2, caretColor: "transparent", cursor: "pointer" }, title: this.state.humanizedCondition, size: "small", allowClear: this.state.humanizedCondition !== "", value: this.state.humanizedCondition, onChange: event => {
75
74
  if (!event.target.value) {
76
75
  this.props.onClearCondition();
@@ -1 +1 @@
1
- {"version":3,"file":"advancedFilterFloatingColumnComponent.js","sourceRoot":"","sources":["../../../../../../coreui/components/advancedFilter/floatingColumnFilter/advancedFilterFloatingColumnComponent.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAC,MAAM,EAAE,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,EAAE,KAAK,EAAC,MAAM,MAAM,CAAC;AAEnE,OAAO,IAAI,MAAM,kBAAkB,CAAC;AACpC,OAAO,4BAA4B,MAAM,4CAA4C,CAAC;AACtF,OAAO,wBAAwB,MAAM,wCAAwC,CAAC;AAC9E,OAAO,6BAA6B,MAAM,kCAAkC,CAAC;AAE7E,OAAO,mBAAmB,MAAM,wBAAwB,CAAC;AAqBzD,MAAM,CAAC,OAAO,OAAO,qCAAsC,SAAQ,KAAK,CAAC,SAAiG;IAItK,YAAY,KAA2D;QACnE,KAAK,CAAC,KAAK,CAAC,CAAC;QAJT,6BAAwB,GAAoC,IAAI,CAAC;QACjE,qBAAgB,GAAG,mBAAmB,CAAC,wBAAwB,CAAC,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC;QAI3G,MAAM,QAAQ,GAAG,KAAK,CAAC,eAAe,EAAE,QAAQ,IAAI,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC;QAE7E,IAAI,CAAC,KAAK,GAAG;YACT,OAAO,EAAE,KAAK;YACd,kBAAkB,EAAE,mBAAmB,CAAC,iBAAiB,CAAC,KAAK,CAAC,gBAAgB,EAAE,IAAI,EAAE,KAAK,CAAC,eAAe,CAAC;YAC9G,cAAc,EAAE,QAAQ;YACxB,WAAW,EAAE,KAAK,CAAC,eAAe,EAAE,KAAK;SAC5C,CAAA;QAED,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACrD,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACzD,CAAC;IAED,kBAAkB,CAAC,SAA+D;QAC9E,IAAI,SAAS,CAAC,eAAe,EAAE,QAAQ,KAAK,IAAI,CAAC,KAAK,CAAC,eAAe,EAAE,QAAQ,IAAI,SAAS,CAAC,eAAe,EAAE,KAAK,KAAK,IAAI,CAAC,KAAK,CAAC,eAAe,EAAE,KAAK,EAAE,CAAC;YACzJ,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,eAAe,EAAE,QAAQ,IAAI,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC;YAElF,IAAI,CAAC,QAAQ,CAAC;gBACV,kBAAkB,EAAE,mBAAmB,CAAC,iBAAiB,CAAC,IAAI,CAAC,KAAK,CAAC,gBAAgB,EAAE,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC;gBACxH,cAAc,EAAE,QAAQ;gBACxB,WAAW,EAAE,IAAI,CAAC,KAAK,CAAC,eAAe,EAAE,KAAK;aACjD,CAAC,CAAC;QACP,CAAC;IACL,CAAC;IAEO,cAAc;QAClB,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,cAAc,EAAE,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;QAC7E,IAAI,CAAC,QAAQ,CAAC,EAAC,OAAO,EAAE,KAAK,EAAC,CAAC,CAAC;IACpC,CAAC;IAEO,cAAc;QAClB,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,cAAc,EAAE,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;QAC7E,IAAI,CAAC,QAAQ,CAAC,EAAC,OAAO,EAAE,KAAK,EAAC,CAAC,CAAC;IACpC,CAAC;IAED,MAAM;QACF,IAAI,EAAC,cAAc,EAAE,WAAW,EAAC,GAAG,IAAI,CAAC,KAAK,CAAC;QAC/C,MAAM,qBAAqB,GAAG,6BAA6B,CAAC,uBAAuB,CAAC,WAAW,CAAC,CAAC;QAEjG,OAAO,CACH,6BAAK,KAAK,EAAE,EAAC,KAAK,EAAE,MAAM,EAAC;YACvB,oBAAC,OAAO,IACJ,OAAO,EAAC,OAAO,EACf,SAAS,EAAC,QAAQ,EAClB,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,EACxB,YAAY,EAAE,OAAO,CAAC,EAAE;oBACpB,IAAI,OAAO,EAAE,CAAC;wBACV,UAAU,CAAC,GAAG,EAAE;4BACZ,IAAI,CAAC,wBAAwB,EAAE,UAAU,EAAE,CAAC;wBAChD,CAAC,CAAC,CAAC;oBACP,CAAC;oBACD,IAAI,CAAC,QAAQ,CAAC,EAAC,OAAO,EAAE,OAAO,EAAC,CAAC,CAAC;gBACtC,CAAC,EACD,KAAK,EAAE,SAAS,EAChB,OAAO,EACH,oBAAC,IAAI,IAAC,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,EAAC,IAAI,EAAE,EAAC,OAAO,EAAE,CAAC,EAAE,eAAe,EAAE,SAAS,EAAC,EAAC;oBACzE,oBAAC,KAAK,IAAC,KAAK,EAAE,EAAC,KAAK,EAAE,GAAG,EAAC,EAAE,SAAS,EAAC,UAAU;wBAC5C,oBAAC,4BAA4B,IACzB,QAAQ,EAAE,cAAc,EACxB,KAAK,EAAE,WAAW,EAClB,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC,SAAS,EAChD,QAAQ,EAAE,CAAC,QAAQ,EAAE,KAAK,EAAE,EAAE;gCAC1B,IAAI,CAAC,QAAQ,CAAC,EAAC,cAAc,EAAE,QAAQ,EAAE,WAAW,EAAE,KAAK,EAAC,CAAC,CAAC;4BAClE,CAAC,GACH;wBACF,oBAAC,wBAAwB,IACrB,GAAG,EAAE,QAAQ,CAAC,EAAE,CAAC,IAAI,CAAC,wBAAwB,GAAG,QAAQ,EACzD,QAAQ,EAAE,cAAc,EACxB,WAAW,EAAE,WAAW,EACxB,gBAAgB,EAAE,IAAI,CAAC,KAAK,CAAC,gBAAgB,EAC7C,YAAY,EAAE,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE;gCAC5B,IAAI,CAAC,qBAAqB,EAAE,CAAC;oCACzB,IAAI,MAAM,EAAE,CAAC;wCACT,IAAI,CAAC,cAAc,EAAE,CAAC;oCAC1B,CAAC;yCAAM,IAAI,KAAK,EAAE,CAAC;wCACf,IAAI,CAAC,cAAc,EAAE,CAAC;oCAC1B,CAAC;gCACL,CAAC;4BACL,CAAC,EACD,QAAQ,EAAE,KAAK,CAAC,EAAE;gCACd,IAAI,CAAC,QAAQ,CAAC,EAAC,WAAW,EAAE,KAAK,EAAC,CAAC,CAAC;4BACxC,CAAC,GACH;wBACF,oBAAC,GAAG,IAAC,MAAM,EAAE,CAAC;4BACV,oBAAC,GAAG,IAAC,IAAI,EAAE,EAAE;gCACT,oBAAC,MAAM,IACH,KAAK,EAAC,cAAc,EACpB,QAAQ,EAAE,qBAAqB,EAC/B,IAAI,EAAC,OAAO,EACZ,KAAK,QACL,OAAO,EAAE,IAAI,CAAC,cAAc,IAE3B,IAAI,CAAC,KAAK,CAAC,CACP,CACP;4BACN,oBAAC,GAAG,IAAC,IAAI,EAAE,EAAE;gCACT,oBAAC,MAAM,IACH,KAAK,EAAC,aAAa,EACnB,QAAQ,EAAE,qBAAqB,EAC/B,IAAI,EAAC,OAAO,EACZ,KAAK,QACL,IAAI,EAAC,SAAS,EACd,OAAO,EAAE,IAAI,CAAC,cAAc,IAE3B,IAAI,CAAC,KAAK,CAAC,CACP,CACP,CACJ,CACF,CACL;gBAGX,oBAAC,KAAK,IACF,KAAK,EAAE,EAAC,SAAS,EAAE,CAAC,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,EAAE,SAAS,EAAC,EACnE,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,kBAAkB,EACpC,IAAI,EAAC,OAAO,EACZ,UAAU,EAAE,IAAI,CAAC,KAAK,CAAC,kBAAkB,KAAK,EAAE,EAChD,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,kBAAkB,EACpC,QAAQ,EAAE,KAAK,CAAC,EAAE;wBACd,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;4BACtB,IAAI,CAAC,KAAK,CAAC,gBAAgB,EAAE,CAAC;wBAClC,CAAC;oBACL,CAAC,GACH,CACI,CACR,CACT,CAAC;IACN,CAAC;CAEJ","sourcesContent":["import React from \"react\";\r\nimport {Button, Card, Col, Input, Popover, Row, Space} from \"antd\";\r\nimport {AdvancedFilterCondition, AdvancedFilterOperator, AdvancedFilterValue,} from \"../../../../api/advancedFilterApi\";\r\nimport i18n from \"d2core/i18n/i18n\";\r\nimport AdvancedFilterOperatorSelect from \"../components/advancedFilterOperatorSelect\";\r\nimport AdvancedFilterValueInput from \"../components/advancedFilterValueInput\";\r\nimport AdvancedFilterValidationUtils from \"../advancedFilterValidationUtils\";\r\nimport {AdvancedFilterColumnDefinition} from \"../../../../api/types/advancedFilter\";\r\nimport AdvancedFilterUtils from \"../advancedFilterUtils\";\r\n\r\ninterface AdvancedFilterFloatingColumnComponentProps {\r\n filterCondition?: AdvancedFilterCondition\r\n columnDefinition: AdvancedFilterColumnDefinition\r\n\r\n onAddCondition(operator: AdvancedFilterOperator, value: AdvancedFilterValue): void\r\n\r\n onSetCondition(operator: AdvancedFilterOperator, value: AdvancedFilterValue): void\r\n\r\n onClearCondition(): void\r\n}\r\n\r\ninterface AdvancedFilterFloatingColumnComponentState {\r\n visible: boolean\r\n humanizedCondition: string\r\n\r\n editedOperator: AdvancedFilterOperator\r\n editedValue: AdvancedFilterValue\r\n}\r\n\r\nexport default class AdvancedFilterFloatingColumnComponent extends React.Component<AdvancedFilterFloatingColumnComponentProps, AdvancedFilterFloatingColumnComponentState> {\r\n private advancedFilterValueInput: AdvancedFilterValueInput | null = null;\r\n private allowedOperators = AdvancedFilterUtils.getOperatorsForValueType(this.props.columnDefinition.valueType);\r\n\r\n constructor(props: Readonly<AdvancedFilterFloatingColumnComponentProps>) {\r\n super(props);\r\n const operator = props.filterCondition?.operator ?? this.allowedOperators[0];\r\n\r\n this.state = {\r\n visible: false,\r\n humanizedCondition: AdvancedFilterUtils.humanizeCondition(props.columnDefinition, true, props.filterCondition),\r\n editedOperator: operator,\r\n editedValue: props.filterCondition?.value,\r\n }\r\n\r\n this.onAddCondition = this.onAddCondition.bind(this);\r\n this.onSetCondition = this.onSetCondition.bind(this);\r\n }\r\n\r\n componentDidUpdate(prevProps: Readonly<AdvancedFilterFloatingColumnComponentProps>) {\r\n if (prevProps.filterCondition?.operator !== this.props.filterCondition?.operator || prevProps.filterCondition?.value !== this.props.filterCondition?.value) {\r\n const operator = this.props.filterCondition?.operator ?? this.allowedOperators[0];\r\n\r\n this.setState({\r\n humanizedCondition: AdvancedFilterUtils.humanizeCondition(this.props.columnDefinition, true, this.props.filterCondition),\r\n editedOperator: operator,\r\n editedValue: this.props.filterCondition?.value,\r\n });\r\n }\r\n }\r\n\r\n private onAddCondition() {\r\n this.props.onAddCondition(this.state.editedOperator, this.state.editedValue);\r\n this.setState({visible: false});\r\n }\r\n\r\n private onSetCondition() {\r\n this.props.onSetCondition(this.state.editedOperator, this.state.editedValue);\r\n this.setState({visible: false});\r\n }\r\n\r\n render() {\r\n let {editedOperator, editedValue} = this.state;\r\n const conditionValueInvalid = AdvancedFilterValidationUtils.isConditionValueInvalid(editedValue);\r\n\r\n return (\r\n <div style={{width: \"100%\"}}>\r\n <Popover\r\n trigger=\"click\"\r\n placement=\"bottom\"\r\n open={this.state.visible}\r\n onOpenChange={visible => {\r\n if (visible) {\r\n setTimeout(() => {\r\n this.advancedFilterValueInput?.focusInput();\r\n });\r\n }\r\n this.setState({visible: visible});\r\n }}\r\n color={\"#F5F7F7\"}\r\n content={\r\n <Card size={\"small\"} styles={{body: {padding: 0, backgroundColor: \"#F5F7F7\"}}}>\r\n <Space style={{width: 240}} direction=\"vertical\">\r\n <AdvancedFilterOperatorSelect\r\n operator={editedOperator}\r\n value={editedValue}\r\n valueType={this.props.columnDefinition.valueType}\r\n onChange={(operator, value) => {\r\n this.setState({editedOperator: operator, editedValue: value});\r\n }}\r\n />\r\n <AdvancedFilterValueInput\r\n ref={instance => this.advancedFilterValueInput = instance}\r\n operator={editedOperator}\r\n editedValue={editedValue}\r\n columnDefinition={this.props.columnDefinition}\r\n onPressEnter={(isCtrl, isAlt) => {\r\n if (!conditionValueInvalid) {\r\n if (isCtrl) {\r\n this.onAddCondition();\r\n } else if (isAlt) {\r\n this.onSetCondition();\r\n }\r\n }\r\n }}\r\n onChange={value => {\r\n this.setState({editedValue: value});\r\n }}\r\n />\r\n <Row gutter={8}>\r\n <Col span={12}>\r\n <Button\r\n title=\"Ctrl + Enter\"\r\n disabled={conditionValueInvalid}\r\n size=\"small\"\r\n block\r\n onClick={this.onAddCondition}\r\n >\r\n {i18n(\"Add\")}\r\n </Button>\r\n </Col>\r\n <Col span={12}>\r\n <Button\r\n title=\"Alt + Enter\"\r\n disabled={conditionValueInvalid}\r\n size=\"small\"\r\n block\r\n type=\"primary\"\r\n onClick={this.onSetCondition}\r\n >\r\n {i18n(\"Set\")}\r\n </Button>\r\n </Col>\r\n </Row>\r\n </Space>\r\n </Card>\r\n }\r\n >\r\n <Input\r\n style={{marginTop: 2, caretColor: \"transparent\", cursor: \"pointer\"}}\r\n title={this.state.humanizedCondition}\r\n size=\"small\"\r\n allowClear={this.state.humanizedCondition !== \"\"}\r\n value={this.state.humanizedCondition}\r\n onChange={event => {\r\n if (!event.target.value) {\r\n this.props.onClearCondition();\r\n }\r\n }}\r\n />\r\n </Popover>\r\n </div>\r\n );\r\n }\r\n\r\n}"]}
1
+ {"version":3,"file":"advancedFilterFloatingColumnComponent.js","sourceRoot":"","sources":["../../../../../../coreui/components/advancedFilter/floatingColumnFilter/advancedFilterFloatingColumnComponent.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAC,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,EAAE,KAAK,EAAC,MAAM,MAAM,CAAC;AAE7D,OAAO,IAAI,MAAM,kBAAkB,CAAC;AACpC,OAAO,4BAA4B,MAAM,4CAA4C,CAAC;AACtF,OAAO,wBAAwB,MAAM,wCAAwC,CAAC;AAC9E,OAAO,6BAA6B,MAAM,kCAAkC,CAAC;AAE7E,OAAO,mBAAmB,MAAM,wBAAwB,CAAC;AAqBzD,MAAM,CAAC,OAAO,OAAO,qCAAsC,SAAQ,KAAK,CAAC,SAAiG;IAItK,YAAY,KAA2D;QACnE,KAAK,CAAC,KAAK,CAAC,CAAC;QAJT,6BAAwB,GAAoC,IAAI,CAAC;QACjE,qBAAgB,GAAG,mBAAmB,CAAC,wBAAwB,CAAC,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC;QAI3G,MAAM,QAAQ,GAAG,KAAK,CAAC,eAAe,EAAE,QAAQ,IAAI,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC;QAE7E,IAAI,CAAC,KAAK,GAAG;YACT,OAAO,EAAE,KAAK;YACd,kBAAkB,EAAE,mBAAmB,CAAC,iBAAiB,CAAC,KAAK,CAAC,gBAAgB,EAAE,IAAI,EAAE,KAAK,CAAC,eAAe,CAAC;YAC9G,cAAc,EAAE,QAAQ;YACxB,WAAW,EAAE,KAAK,CAAC,eAAe,EAAE,KAAK;SAC5C,CAAA;QAED,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACrD,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACzD,CAAC;IAED,kBAAkB,CAAC,SAA+D;QAC9E,IAAI,SAAS,CAAC,eAAe,EAAE,QAAQ,KAAK,IAAI,CAAC,KAAK,CAAC,eAAe,EAAE,QAAQ,IAAI,SAAS,CAAC,eAAe,EAAE,KAAK,KAAK,IAAI,CAAC,KAAK,CAAC,eAAe,EAAE,KAAK,EAAE,CAAC;YACzJ,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,eAAe,EAAE,QAAQ,IAAI,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC;YAElF,IAAI,CAAC,QAAQ,CAAC;gBACV,kBAAkB,EAAE,mBAAmB,CAAC,iBAAiB,CAAC,IAAI,CAAC,KAAK,CAAC,gBAAgB,EAAE,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC;gBACxH,cAAc,EAAE,QAAQ;gBACxB,WAAW,EAAE,IAAI,CAAC,KAAK,CAAC,eAAe,EAAE,KAAK;aACjD,CAAC,CAAC;QACP,CAAC;IACL,CAAC;IAEO,cAAc;QAClB,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,cAAc,EAAE,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;QAC7E,IAAI,CAAC,QAAQ,CAAC,EAAC,OAAO,EAAE,KAAK,EAAC,CAAC,CAAC;IACpC,CAAC;IAEO,cAAc;QAClB,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,cAAc,EAAE,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;QAC7E,IAAI,CAAC,QAAQ,CAAC,EAAC,OAAO,EAAE,KAAK,EAAC,CAAC,CAAC;IACpC,CAAC;IAED,MAAM;QACF,IAAI,EAAC,cAAc,EAAE,WAAW,EAAC,GAAG,IAAI,CAAC,KAAK,CAAC;QAC/C,MAAM,qBAAqB,GAAG,6BAA6B,CAAC,uBAAuB,CAAC,WAAW,CAAC,CAAC;QAEjG,OAAO,CACH,6BAAK,KAAK,EAAE,EAAC,KAAK,EAAE,MAAM,EAAC;YACvB,oBAAC,OAAO,IACJ,OAAO,EAAC,OAAO,EACf,SAAS,EAAC,QAAQ,EAClB,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,EACxB,YAAY,EAAE,OAAO,CAAC,EAAE;oBACpB,IAAI,OAAO,EAAE,CAAC;wBACV,UAAU,CAAC,GAAG,EAAE;4BACZ,IAAI,CAAC,wBAAwB,EAAE,UAAU,EAAE,CAAC;wBAChD,CAAC,CAAC,CAAC;oBACP,CAAC;oBACD,IAAI,CAAC,QAAQ,CAAC,EAAC,OAAO,EAAE,OAAO,EAAC,CAAC,CAAC;gBACtC,CAAC,EACD,OAAO,EACH,oBAAC,KAAK,IAAC,KAAK,EAAE,EAAC,KAAK,EAAE,GAAG,EAAC,EAAE,SAAS,EAAC,UAAU;oBAC5C,oBAAC,4BAA4B,IACzB,QAAQ,EAAE,cAAc,EACxB,KAAK,EAAE,WAAW,EAClB,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC,SAAS,EAChD,QAAQ,EAAE,CAAC,QAAQ,EAAE,KAAK,EAAE,EAAE;4BAC1B,IAAI,CAAC,QAAQ,CAAC,EAAC,cAAc,EAAE,QAAQ,EAAE,WAAW,EAAE,KAAK,EAAC,CAAC,CAAC;wBAClE,CAAC,GACH;oBACF,oBAAC,wBAAwB,IACrB,GAAG,EAAE,QAAQ,CAAC,EAAE,CAAC,IAAI,CAAC,wBAAwB,GAAG,QAAQ,EACzD,QAAQ,EAAE,cAAc,EACxB,WAAW,EAAE,WAAW,EACxB,gBAAgB,EAAE,IAAI,CAAC,KAAK,CAAC,gBAAgB,EAC7C,YAAY,EAAE,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE;4BAC5B,IAAI,CAAC,qBAAqB,EAAE,CAAC;gCACzB,IAAI,MAAM,EAAE,CAAC;oCACT,IAAI,CAAC,cAAc,EAAE,CAAC;gCAC1B,CAAC;qCAAM,IAAI,KAAK,EAAE,CAAC;oCACf,IAAI,CAAC,cAAc,EAAE,CAAC;gCAC1B,CAAC;4BACL,CAAC;wBACL,CAAC,EACD,QAAQ,EAAE,KAAK,CAAC,EAAE;4BACd,IAAI,CAAC,QAAQ,CAAC,EAAC,WAAW,EAAE,KAAK,EAAC,CAAC,CAAC;wBACxC,CAAC,GACH;oBACF,oBAAC,GAAG,IAAC,MAAM,EAAE,CAAC;wBACV,oBAAC,GAAG,IAAC,IAAI,EAAE,EAAE;4BACT,oBAAC,MAAM,IACH,KAAK,EAAC,cAAc,EACpB,QAAQ,EAAE,qBAAqB,EAC/B,IAAI,EAAC,OAAO,EACZ,KAAK,QACL,OAAO,EAAE,IAAI,CAAC,cAAc,IAE3B,IAAI,CAAC,KAAK,CAAC,CACP,CACP;wBACN,oBAAC,GAAG,IAAC,IAAI,EAAE,EAAE;4BACT,oBAAC,MAAM,IACH,KAAK,EAAC,aAAa,EACnB,QAAQ,EAAE,qBAAqB,EAC/B,IAAI,EAAC,OAAO,EACZ,KAAK,QACL,IAAI,EAAC,SAAS,EACd,OAAO,EAAE,IAAI,CAAC,cAAc,IAE3B,IAAI,CAAC,KAAK,CAAC,CACP,CACP,CACJ,CACF;gBAGZ,oBAAC,KAAK,IACF,KAAK,EAAE,EAAC,SAAS,EAAE,CAAC,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,EAAE,SAAS,EAAC,EACnE,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,kBAAkB,EACpC,IAAI,EAAC,OAAO,EACZ,UAAU,EAAE,IAAI,CAAC,KAAK,CAAC,kBAAkB,KAAK,EAAE,EAChD,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,kBAAkB,EACpC,QAAQ,EAAE,KAAK,CAAC,EAAE;wBACd,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;4BACtB,IAAI,CAAC,KAAK,CAAC,gBAAgB,EAAE,CAAC;wBAClC,CAAC;oBACL,CAAC,GACH,CACI,CACR,CACT,CAAC;IACN,CAAC;CAEJ","sourcesContent":["import React from \"react\";\r\nimport {Button, Col, Input, Popover, Row, Space} from \"antd\";\r\nimport {AdvancedFilterCondition, AdvancedFilterOperator, AdvancedFilterValue,} from \"../../../../api/advancedFilterApi\";\r\nimport i18n from \"d2core/i18n/i18n\";\r\nimport AdvancedFilterOperatorSelect from \"../components/advancedFilterOperatorSelect\";\r\nimport AdvancedFilterValueInput from \"../components/advancedFilterValueInput\";\r\nimport AdvancedFilterValidationUtils from \"../advancedFilterValidationUtils\";\r\nimport {AdvancedFilterColumnDefinition} from \"../../../../api/types/advancedFilter\";\r\nimport AdvancedFilterUtils from \"../advancedFilterUtils\";\r\n\r\ninterface AdvancedFilterFloatingColumnComponentProps {\r\n filterCondition?: AdvancedFilterCondition\r\n columnDefinition: AdvancedFilterColumnDefinition\r\n\r\n onAddCondition(operator: AdvancedFilterOperator, value: AdvancedFilterValue): void\r\n\r\n onSetCondition(operator: AdvancedFilterOperator, value: AdvancedFilterValue): void\r\n\r\n onClearCondition(): void\r\n}\r\n\r\ninterface AdvancedFilterFloatingColumnComponentState {\r\n visible: boolean\r\n humanizedCondition: string\r\n\r\n editedOperator: AdvancedFilterOperator\r\n editedValue: AdvancedFilterValue\r\n}\r\n\r\nexport default class AdvancedFilterFloatingColumnComponent extends React.Component<AdvancedFilterFloatingColumnComponentProps, AdvancedFilterFloatingColumnComponentState> {\r\n private advancedFilterValueInput: AdvancedFilterValueInput | null = null;\r\n private allowedOperators = AdvancedFilterUtils.getOperatorsForValueType(this.props.columnDefinition.valueType);\r\n\r\n constructor(props: Readonly<AdvancedFilterFloatingColumnComponentProps>) {\r\n super(props);\r\n const operator = props.filterCondition?.operator ?? this.allowedOperators[0];\r\n\r\n this.state = {\r\n visible: false,\r\n humanizedCondition: AdvancedFilterUtils.humanizeCondition(props.columnDefinition, true, props.filterCondition),\r\n editedOperator: operator,\r\n editedValue: props.filterCondition?.value,\r\n }\r\n\r\n this.onAddCondition = this.onAddCondition.bind(this);\r\n this.onSetCondition = this.onSetCondition.bind(this);\r\n }\r\n\r\n componentDidUpdate(prevProps: Readonly<AdvancedFilterFloatingColumnComponentProps>) {\r\n if (prevProps.filterCondition?.operator !== this.props.filterCondition?.operator || prevProps.filterCondition?.value !== this.props.filterCondition?.value) {\r\n const operator = this.props.filterCondition?.operator ?? this.allowedOperators[0];\r\n\r\n this.setState({\r\n humanizedCondition: AdvancedFilterUtils.humanizeCondition(this.props.columnDefinition, true, this.props.filterCondition),\r\n editedOperator: operator,\r\n editedValue: this.props.filterCondition?.value,\r\n });\r\n }\r\n }\r\n\r\n private onAddCondition() {\r\n this.props.onAddCondition(this.state.editedOperator, this.state.editedValue);\r\n this.setState({visible: false});\r\n }\r\n\r\n private onSetCondition() {\r\n this.props.onSetCondition(this.state.editedOperator, this.state.editedValue);\r\n this.setState({visible: false});\r\n }\r\n\r\n render() {\r\n let {editedOperator, editedValue} = this.state;\r\n const conditionValueInvalid = AdvancedFilterValidationUtils.isConditionValueInvalid(editedValue);\r\n\r\n return (\r\n <div style={{width: \"100%\"}}>\r\n <Popover\r\n trigger=\"click\"\r\n placement=\"bottom\"\r\n open={this.state.visible}\r\n onOpenChange={visible => {\r\n if (visible) {\r\n setTimeout(() => {\r\n this.advancedFilterValueInput?.focusInput();\r\n });\r\n }\r\n this.setState({visible: visible});\r\n }}\r\n content={\r\n <Space style={{width: 240}} direction=\"vertical\">\r\n <AdvancedFilterOperatorSelect\r\n operator={editedOperator}\r\n value={editedValue}\r\n valueType={this.props.columnDefinition.valueType}\r\n onChange={(operator, value) => {\r\n this.setState({editedOperator: operator, editedValue: value});\r\n }}\r\n />\r\n <AdvancedFilterValueInput\r\n ref={instance => this.advancedFilterValueInput = instance}\r\n operator={editedOperator}\r\n editedValue={editedValue}\r\n columnDefinition={this.props.columnDefinition}\r\n onPressEnter={(isCtrl, isAlt) => {\r\n if (!conditionValueInvalid) {\r\n if (isCtrl) {\r\n this.onAddCondition();\r\n } else if (isAlt) {\r\n this.onSetCondition();\r\n }\r\n }\r\n }}\r\n onChange={value => {\r\n this.setState({editedValue: value});\r\n }}\r\n />\r\n <Row gutter={8}>\r\n <Col span={12}>\r\n <Button\r\n title=\"Ctrl + Enter\"\r\n disabled={conditionValueInvalid}\r\n size=\"small\"\r\n block\r\n onClick={this.onAddCondition}\r\n >\r\n {i18n(\"Add\")}\r\n </Button>\r\n </Col>\r\n <Col span={12}>\r\n <Button\r\n title=\"Alt + Enter\"\r\n disabled={conditionValueInvalid}\r\n size=\"small\"\r\n block\r\n type=\"primary\"\r\n onClick={this.onSetCondition}\r\n >\r\n {i18n(\"Set\")}\r\n </Button>\r\n </Col>\r\n </Row>\r\n </Space>\r\n }\r\n >\r\n <Input\r\n style={{marginTop: 2, caretColor: \"transparent\", cursor: \"pointer\"}}\r\n title={this.state.humanizedCondition}\r\n size=\"small\"\r\n allowClear={this.state.humanizedCondition !== \"\"}\r\n value={this.state.humanizedCondition}\r\n onChange={event => {\r\n if (!event.target.value) {\r\n this.props.onClearCondition();\r\n }\r\n }}\r\n />\r\n </Popover>\r\n </div>\r\n );\r\n }\r\n\r\n}"]}
@@ -8,6 +8,7 @@ export interface AbstractEntitiesOnEntityListProps<ME extends Entity> {
8
8
  disabled?: boolean;
9
9
  isHighlighted?: boolean;
10
10
  isError?: boolean;
11
+ loading?: boolean;
11
12
  onChange?(): void;
12
13
  }
13
14
  export interface AbstractEntitiesOnEntityListState<SE extends Entity> {
@@ -24,7 +25,7 @@ export declare abstract class AbstractEntitiesOnEntityList<ME extends Entity, SE
24
25
  protected initialState: AbstractEntitiesOnEntityListState<SE>;
25
26
  componentDidUpdate(prevProps: Readonly<P>): void;
26
27
  abstract getInitialColumnDefs(): DataGridColDef[];
27
- abstract getSubEntities(): SE[] | undefined;
28
+ abstract getSubEntities(): SE[];
28
29
  protected renderSelectModalDialog(): React.ReactNode | undefined;
29
30
  protected renderControlPanel(): JSX.Element | null;
30
31
  protected noRecordsOverlayRenderer(): React.JSX.Element;
@@ -35,5 +36,6 @@ export declare abstract class AbstractEntitiesOnEntityList<ME extends Entity, SE
35
36
  protected onRowDoubleClicked(_event: RowDoubleClickedEvent): void;
36
37
  private renderFullScreenModalDialog;
37
38
  protected renderGrid(fullscreen: boolean): React.JSX.Element;
39
+ private renderLoading;
38
40
  render(): React.JSX.Element;
39
41
  }
@@ -1,10 +1,11 @@
1
1
  import React from "react";
2
2
  import { Button } from "antd";
3
3
  import i18n from "d2core/i18n/i18n";
4
- import { CloseCircleOutlined, DeleteOutlined, FullscreenOutlined, PlusCircleOutlined } from "@ant-design/icons";
4
+ import { CloseCircleOutlined, DeleteOutlined, FullscreenOutlined, LoadingOutlined, PlusCircleOutlined } from "@ant-design/icons";
5
5
  import { ModalDialog } from "d2coreui/components/modal/modalDialog";
6
6
  import ExtendedDataGrid from "d2coreui/components/grid/extendedDataGrid";
7
7
  import { ERROR_COLOR, WARNING_COLOR } from "../../../api/constants/constants";
8
+ import Spin from "antd/lib/spin";
8
9
  export class AbstractEntitiesOnEntityList extends React.Component {
9
10
  constructor(props) {
10
11
  super(props);
@@ -34,7 +35,7 @@ export class AbstractEntitiesOnEntityList extends React.Component {
34
35
  return React.createElement("div", null);
35
36
  }
36
37
  onExcludeRecords() {
37
- const subEntities = this.getSubEntities() ?? [];
38
+ const subEntities = this.getSubEntities();
38
39
  this.state.selectedRecords.forEach(subEntityToExclude => {
39
40
  const index = subEntities.findIndex(value => value.id === subEntityToExclude.id);
40
41
  subEntities.splice(index, 1);
@@ -119,7 +120,7 @@ export class AbstractEntitiesOnEntityList extends React.Component {
119
120
  this.gridApi = params.api;
120
121
  }
121
122
  }, defaultGridConfiguration: { pageSize: -1 }, columnDefs: this.state.columnDefs, rowData: subEntities, onLoadData: (callback) => {
122
- callback(subEntities?.length ?? 0);
123
+ callback(subEntities.length);
123
124
  }, search: {
124
125
  hidden: true,
125
126
  searchButtonHidden: true,
@@ -137,13 +138,20 @@ export class AbstractEntitiesOnEntityList extends React.Component {
137
138
  }, controlPanel: {
138
139
  renderer: this.renderControlPanel
139
140
  }, panelStyle: { padding: 0 }, tableConfigVisible: false, noRecordsOverlayRenderer: () => {
140
- if (this.getSubEntities()?.length === 0) {
141
+ if (this.getSubEntities().length === 0) {
141
142
  return this.noRecordsOverlayRenderer();
142
143
  }
143
144
  return React.createElement("div", null);
144
145
  }, onRowDoubleClicked: this.onRowDoubleClicked, singleClickEdit: true, stopEditingWhenCellsLoseFocus: true, enterNavigatesVerticallyAfterEdit: true }));
145
146
  }
147
+ renderLoading() {
148
+ return (React.createElement("div", { style: { height: this.props.height, display: "flex", justifyContent: "center", alignItems: "center" } },
149
+ React.createElement(Spin, { indicator: React.createElement(LoadingOutlined, { style: { fontSize: 48 }, spin: true }) })));
150
+ }
146
151
  render() {
152
+ if (this.props.loading) {
153
+ return this.renderLoading();
154
+ }
147
155
  return (React.createElement("div", { style: { height: this.props.height, overflow: "auto", resize: "vertical" } },
148
156
  this.renderFullScreenModalDialog(),
149
157
  this.renderSelectModalDialog(),
@@ -1 +1 @@
1
- {"version":3,"file":"abstractEntitiesOnEntityList.js","sourceRoot":"","sources":["../../../../../coreui/components/assignEntitiesToEntity/abstractEntitiesOnEntityList.tsx"],"names":[],"mappings":"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","sourcesContent":["import React from \"react\";\nimport Entity from \"../../../api/types/entity\";\nimport {DataGridColDef} from \"d2coreui/components/grid/dataGrid\";\nimport {GridApi, GridReadyEvent, SelectionChangedEvent, RowDoubleClickedEvent} from \"ag-grid-community\";\nimport {Button} from \"antd\";\nimport i18n from \"d2core/i18n/i18n\";\nimport {CloseCircleOutlined, DeleteOutlined, FullscreenOutlined, PlusCircleOutlined} from \"@ant-design/icons\";\nimport {ModalDialog, ModalDialogMode} from \"d2coreui/components/modal/modalDialog\";\nimport ExtendedDataGrid from \"d2coreui/components/grid/extendedDataGrid\";\nimport {ERROR_COLOR, WARNING_COLOR} from \"../../../api/constants/constants\";\n\nexport interface AbstractEntitiesOnEntityListProps<ME extends Entity> {\n editedEntity: ME\n height: number\n disabled?: boolean\n isHighlighted?: boolean\n isError?: boolean\n\n onChange?(): void\n}\n\nexport interface AbstractEntitiesOnEntityListState<SE extends Entity> {\n selectedRecords: SE[]\n selectModalDialogVisible: boolean\n columnDefs: DataGridColDef[]\n fullscreenModalOpen: boolean\n}\n\nexport abstract class AbstractEntitiesOnEntityList<\n ME extends Entity,\n SE extends Entity,\n P extends AbstractEntitiesOnEntityListProps<ME>,\n S extends AbstractEntitiesOnEntityListState<SE>\n> extends React.Component<P, S> {\n protected gridApi?: GridApi;\n protected fullscreenGridApi?: GridApi;\n protected initialColumnDefs?: DataGridColDef[];\n\n protected constructor(props: Readonly<P>) {\n super(props);\n\n this.onSelectionChanged = this.onSelectionChanged.bind(this);\n this.renderControlPanel = this.renderControlPanel.bind(this);\n this.onExcludeRecords = this.onExcludeRecords.bind(this);\n this.onRowDoubleClicked = this.onRowDoubleClicked.bind(this);\n }\n\n protected initialState: AbstractEntitiesOnEntityListState<SE> = {\n selectedRecords: [],\n selectModalDialogVisible: false,\n columnDefs: this.getInitialColumnDefs(),\n fullscreenModalOpen: false,\n }\n\n componentDidUpdate(prevProps: Readonly<P>) {\n if (prevProps.disabled !== this.props.disabled || prevProps.editedEntity.id !== this.props.editedEntity.id) {\n this.gridApi?.updateGridOptions({rowData: this.getSubEntities()});\n }\n }\n\n abstract getInitialColumnDefs(): DataGridColDef[];\n\n abstract getSubEntities(): SE[] | undefined;\n\n protected renderSelectModalDialog(): React.ReactNode | undefined {\n return undefined;\n }\n\n protected renderControlPanel(): JSX.Element | null {\n return null;\n }\n\n protected noRecordsOverlayRenderer() {\n return <div/>\n }\n\n protected onExcludeRecords() {\n const subEntities = this.getSubEntities() ?? [];\n\n this.state.selectedRecords.forEach(subEntityToExclude => {\n const index = subEntities.findIndex(value => value.id === subEntityToExclude.id);\n subEntities.splice(index, 1);\n });\n\n this.props.onChange?.();\n if (this.state.fullscreenModalOpen) {\n this.fullscreenGridApi?.applyTransaction({remove: this.state.selectedRecords});\n } else {\n this.gridApi?.applyTransaction({remove: this.state.selectedRecords});\n }\n }\n\n protected renderToolbarButtons() {\n return <>\n <Button\n title={i18n(\"Add Record\")}\n disabled={this.props.disabled}\n onClick={() => {\n this.setState({selectModalDialogVisible: true});\n }}\n >\n <PlusCircleOutlined/>\n </Button>\n <Button\n title={i18n(\"Exclude Record\")}\n disabled={this.state.selectedRecords.length === 0 || this.props.disabled}\n onClick={() => {\n ModalDialog.delete({\n mode: ModalDialogMode.YES_NO,\n title:\n <span style={{whiteSpace: \"nowrap\"}}>\n {i18n(\"Exclude %n records?\", this.state.selectedRecords.length)}\n </span>,\n icon: <DeleteOutlined style={{color: ERROR_COLOR}}/>,\n onOk: this.onExcludeRecords\n });\n }}\n >\n <CloseCircleOutlined/>\n </Button>\n </>;\n }\n\n private onSelectionChanged(event: SelectionChangedEvent): void {\n const selectedRows = event.api.getSelectedRows();\n this.setState({selectedRecords: selectedRows});\n }\n\n protected addRecordsToGrid(records: SE[], idToSelect?: number) {\n if (records.length > 0) {\n if (this.state.fullscreenModalOpen) {\n this.fullscreenGridApi?.applyTransaction({add: records});\n } else {\n this.gridApi?.applyTransaction({add: records});\n }\n this.props.onChange?.();\n }\n\n if (idToSelect !== undefined) {\n let rowNode;\n if (this.state.fullscreenModalOpen) {\n rowNode = this.fullscreenGridApi?.getRowNode(idToSelect.toString());\n this.fullscreenGridApi?.ensureNodeVisible(rowNode);\n } else {\n rowNode = this.gridApi?.getRowNode(idToSelect.toString());\n this.gridApi?.ensureNodeVisible(rowNode);\n }\n\n rowNode?.setSelected(true, true);\n }\n }\n\n protected onRowDoubleClicked(_event: RowDoubleClickedEvent) {\n }\n\n private renderFullScreenModalDialog() {\n return (\n <ModalDialog\n styles={{body: {paddingTop: 0}}}\n mode={ModalDialogMode.NO_BUTTONS}\n open={this.state.fullscreenModalOpen}\n onCancel={() => this.setState({fullscreenModalOpen: false})}\n afterClose={() => {\n if (this.renderSelectModalDialog()) {\n this.gridApi?.updateGridOptions({rowData: this.getSubEntities()});\n } else {\n this.gridApi?.refreshCells({force: true});\n }\n }}\n title={i18n(\"Fullscreen\")}\n initialWidth={800}\n initialHeight={window.innerHeight - 20}\n >\n {this.renderGrid(true)}\n </ModalDialog>\n )\n }\n\n protected renderGrid(fullscreen: boolean) {\n const subEntities = this.getSubEntities();\n\n let tablePanelStyleBorder: React.CSSProperties[\"border\"] = \"unset\";\n if (this.props.isHighlighted) {\n tablePanelStyleBorder = `1px solid ${WARNING_COLOR}`;\n } else if (this.props.isError) {\n tablePanelStyleBorder = `1px solid ${ERROR_COLOR}`;\n }\n\n return (\n <ExtendedDataGrid\n onGridReady={(params: GridReadyEvent) => {\n if (fullscreen) {\n this.fullscreenGridApi = params.api;\n } else {\n this.gridApi = params.api;\n }\n }}\n defaultGridConfiguration={{pageSize: -1}}\n columnDefs={this.state.columnDefs}\n rowData={subEntities}\n onLoadData={(callback) => {\n callback(subEntities?.length ?? 0);\n }}\n search={{\n hidden: true,\n searchButtonHidden: true,\n }}\n rowSelection=\"multiple\"\n onSelectionChanged={this.onSelectionChanged}\n toolbar={{\n renderToolbar: (originalSearchBar) => this.renderSelectModalDialog() ? originalSearchBar : <></>,\n toolbarButtons: this.renderSelectModalDialog() ? this.renderToolbarButtons() : <></>,\n extraContent:\n !fullscreen\n ?\n <FullscreenOutlined\n style={{cursor: \"pointer\", height: 32}}\n title={i18n(\"Fullscreen\")}\n onClick={() => this.setState({fullscreenModalOpen: true})}\n />\n :\n undefined\n }}\n tablePanelStyle={{\n marginTop: this.renderSelectModalDialog() ? 4 : 0,\n border: tablePanelStyleBorder,\n }}\n controlPanel={{\n renderer: this.renderControlPanel\n }}\n panelStyle={{padding: 0}}\n tableConfigVisible={false}\n noRecordsOverlayRenderer={() => {\n if (this.getSubEntities()?.length === 0) {\n return this.noRecordsOverlayRenderer();\n }\n return <div/>\n }}\n onRowDoubleClicked={this.onRowDoubleClicked}\n singleClickEdit\n stopEditingWhenCellsLoseFocus\n enterNavigatesVerticallyAfterEdit\n />\n );\n }\n\n render() {\n return (\n <div style={{height: this.props.height, overflow: \"auto\", resize: \"vertical\"}}>\n {this.renderFullScreenModalDialog()}\n {this.renderSelectModalDialog()}\n {this.renderGrid(false)}\n </div>\n );\n }\n\n}"]}
1
+ {"version":3,"file":"abstractEntitiesOnEntityList.js","sourceRoot":"","sources":["../../../../../coreui/components/assignEntitiesToEntity/abstractEntitiesOnEntityList.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAI1B,OAAO,EAAC,MAAM,EAAC,MAAM,MAAM,CAAC;AAC5B,OAAO,IAAI,MAAM,kBAAkB,CAAC;AACpC,OAAO,EACH,mBAAmB,EACnB,cAAc,EACd,kBAAkB,EAClB,eAAe,EACf,kBAAkB,EACrB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAC,WAAW,EAAkB,MAAM,uCAAuC,CAAC;AACnF,OAAO,gBAAgB,MAAM,2CAA2C,CAAC;AACzE,OAAO,EAAC,WAAW,EAAE,aAAa,EAAC,MAAM,kCAAkC,CAAC;AAC5E,OAAO,IAAI,MAAM,eAAe,CAAC;AAoBjC,MAAM,OAAgB,4BAKpB,SAAQ,KAAK,CAAC,SAAe;IAK3B,YAAsB,KAAkB;QACpC,KAAK,CAAC,KAAK,CAAC,CAAC;QAQP,iBAAY,GAA0C;YAC5D,eAAe,EAAE,EAAE;YACnB,wBAAwB,EAAE,KAAK;YAC/B,UAAU,EAAE,IAAI,CAAC,oBAAoB,EAAE;YACvC,mBAAmB,EAAE,KAAK;SAC7B,CAAA;QAXG,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC7D,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC7D,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACzD,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACjE,CAAC;IASD,kBAAkB,CAAC,SAAsB;QACrC,IAAI,SAAS,CAAC,QAAQ,KAAK,IAAI,CAAC,KAAK,CAAC,QAAQ,IAAI,SAAS,CAAC,YAAY,CAAC,EAAE,KAAK,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,EAAE,EAAE,CAAC;YACzG,IAAI,CAAC,OAAO,EAAE,iBAAiB,CAAC,EAAC,OAAO,EAAE,IAAI,CAAC,cAAc,EAAE,EAAC,CAAC,CAAC;QACtE,CAAC;IACL,CAAC;IAMS,uBAAuB;QAC7B,OAAO,SAAS,CAAC;IACrB,CAAC;IAES,kBAAkB;QACxB,OAAO,IAAI,CAAC;IAChB,CAAC;IAES,wBAAwB;QAC9B,OAAO,gCAAM,CAAA;IACjB,CAAC;IAES,gBAAgB;QACtB,MAAM,WAAW,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC;QAE1C,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,OAAO,CAAC,kBAAkB,CAAC,EAAE;YACpD,MAAM,KAAK,GAAG,WAAW,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,KAAK,kBAAkB,CAAC,EAAE,CAAC,CAAC;YACjF,WAAW,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;QACjC,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,EAAE,CAAC;QACxB,IAAI,IAAI,CAAC,KAAK,CAAC,mBAAmB,EAAE,CAAC;YACjC,IAAI,CAAC,iBAAiB,EAAE,gBAAgB,CAAC,EAAC,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,eAAe,EAAC,CAAC,CAAC;QACnF,CAAC;aAAM,CAAC;YACJ,IAAI,CAAC,OAAO,EAAE,gBAAgB,CAAC,EAAC,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,eAAe,EAAC,CAAC,CAAC;QACzE,CAAC;IACL,CAAC;IAES,oBAAoB;QAC1B,OAAO;YACH,oBAAC,MAAM,IACH,KAAK,EAAE,IAAI,CAAC,YAAY,CAAC,EACzB,QAAQ,EAAE,IAAI,CAAC,KAAK,CAAC,QAAQ,EAC7B,OAAO,EAAE,GAAG,EAAE;oBACV,IAAI,CAAC,QAAQ,CAAC,EAAC,wBAAwB,EAAE,IAAI,EAAC,CAAC,CAAC;gBACpD,CAAC;gBAED,oBAAC,kBAAkB,OAAE,CAChB;YACT,oBAAC,MAAM,IACH,KAAK,EAAE,IAAI,CAAC,gBAAgB,CAAC,EAC7B,QAAQ,EAAE,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,MAAM,KAAK,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,QAAQ,EACxE,OAAO,EAAE,GAAG,EAAE;oBACV,WAAW,CAAC,MAAM,CAAC;wBACf,IAAI,UAAwB;wBAC5B,KAAK,EACD,8BAAM,KAAK,EAAE,EAAC,UAAU,EAAE,QAAQ,EAAC,IAC9B,IAAI,CAAC,qBAAqB,EAAE,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,MAAM,CAAC,CAC5D;wBACX,IAAI,EAAE,oBAAC,cAAc,IAAC,KAAK,EAAE,EAAC,KAAK,EAAE,WAAW,EAAC,GAAG;wBACpD,IAAI,EAAE,IAAI,CAAC,gBAAgB;qBAC9B,CAAC,CAAC;gBACP,CAAC;gBAED,oBAAC,mBAAmB,OAAE,CACjB,CACV,CAAC;IACR,CAAC;IAEO,kBAAkB,CAAC,KAA4B;QACnD,MAAM,YAAY,GAAG,KAAK,CAAC,GAAG,CAAC,eAAe,EAAE,CAAC;QACjD,IAAI,CAAC,QAAQ,CAAC,EAAC,eAAe,EAAE,YAAY,EAAC,CAAC,CAAC;IACnD,CAAC;IAES,gBAAgB,CAAC,OAAa,EAAE,UAAmB;QACzD,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACrB,IAAI,IAAI,CAAC,KAAK,CAAC,mBAAmB,EAAE,CAAC;gBACjC,IAAI,CAAC,iBAAiB,EAAE,gBAAgB,CAAC,EAAC,GAAG,EAAE,OAAO,EAAC,CAAC,CAAC;YAC7D,CAAC;iBAAM,CAAC;gBACJ,IAAI,CAAC,OAAO,EAAE,gBAAgB,CAAC,EAAC,GAAG,EAAE,OAAO,EAAC,CAAC,CAAC;YACnD,CAAC;YACD,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,EAAE,CAAC;QAC5B,CAAC;QAED,IAAI,UAAU,KAAK,SAAS,EAAE,CAAC;YAC3B,IAAI,OAAO,CAAC;YACZ,IAAI,IAAI,CAAC,KAAK,CAAC,mBAAmB,EAAE,CAAC;gBACjC,OAAO,GAAG,IAAI,CAAC,iBAAiB,EAAE,UAAU,CAAC,UAAU,CAAC,QAAQ,EAAE,CAAC,CAAC;gBACpE,IAAI,CAAC,iBAAiB,EAAE,iBAAiB,CAAC,OAAO,CAAC,CAAC;YACvD,CAAC;iBAAM,CAAC;gBACJ,OAAO,GAAG,IAAI,CAAC,OAAO,EAAE,UAAU,CAAC,UAAU,CAAC,QAAQ,EAAE,CAAC,CAAC;gBAC1D,IAAI,CAAC,OAAO,EAAE,iBAAiB,CAAC,OAAO,CAAC,CAAC;YAC7C,CAAC;YAED,OAAO,EAAE,WAAW,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QACrC,CAAC;IACL,CAAC;IAES,kBAAkB,CAAC,MAA6B;IAC1D,CAAC;IAEO,2BAA2B;QAC/B,OAAO,CACH,oBAAC,WAAW,IACR,MAAM,EAAE,EAAC,IAAI,EAAE,EAAC,UAAU,EAAE,CAAC,EAAC,EAAC,EAC/B,IAAI,gBACJ,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,mBAAmB,EACpC,QAAQ,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAC,mBAAmB,EAAE,KAAK,EAAC,CAAC,EAC3D,UAAU,EAAE,GAAG,EAAE;gBACb,IAAI,IAAI,CAAC,uBAAuB,EAAE,EAAE,CAAC;oBACjC,IAAI,CAAC,OAAO,EAAE,iBAAiB,CAAC,EAAC,OAAO,EAAE,IAAI,CAAC,cAAc,EAAE,EAAC,CAAC,CAAC;gBACtE,CAAC;qBAAM,CAAC;oBACJ,IAAI,CAAC,OAAO,EAAE,YAAY,CAAC,EAAC,KAAK,EAAE,IAAI,EAAC,CAAC,CAAC;gBAC9C,CAAC;YACL,CAAC,EACD,KAAK,EAAE,IAAI,CAAC,YAAY,CAAC,EACzB,YAAY,EAAE,GAAG,EACjB,aAAa,EAAE,MAAM,CAAC,WAAW,GAAG,EAAE,IAErC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CACZ,CACjB,CAAA;IACL,CAAC;IAES,UAAU,CAAC,UAAmB;QACpC,MAAM,WAAW,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC;QAE1C,IAAI,qBAAqB,GAAkC,OAAO,CAAC;QACnE,IAAI,IAAI,CAAC,KAAK,CAAC,aAAa,EAAE,CAAC;YAC3B,qBAAqB,GAAG,aAAa,aAAa,EAAE,CAAC;QACzD,CAAC;aAAM,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC;YAC5B,qBAAqB,GAAG,aAAa,WAAW,EAAE,CAAC;QACvD,CAAC;QAED,OAAO,CACH,oBAAC,gBAAgB,IACb,WAAW,EAAE,CAAC,MAAsB,EAAE,EAAE;gBACpC,IAAI,UAAU,EAAE,CAAC;oBACb,IAAI,CAAC,iBAAiB,GAAG,MAAM,CAAC,GAAG,CAAC;gBACxC,CAAC;qBAAM,CAAC;oBACJ,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,GAAG,CAAC;gBAC9B,CAAC;YACL,CAAC,EACD,wBAAwB,EAAE,EAAC,QAAQ,EAAE,CAAC,CAAC,EAAC,EACxC,UAAU,EAAE,IAAI,CAAC,KAAK,CAAC,UAAU,EACjC,OAAO,EAAE,WAAW,EACpB,UAAU,EAAE,CAAC,QAAQ,EAAE,EAAE;gBACrB,QAAQ,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;YACjC,CAAC,EACD,MAAM,EAAE;gBACJ,MAAM,EAAE,IAAI;gBACZ,kBAAkB,EAAE,IAAI;aAC3B,EACD,YAAY,EAAC,UAAU,EACvB,kBAAkB,EAAE,IAAI,CAAC,kBAAkB,EAC3C,OAAO,EAAE;gBACL,aAAa,EAAE,CAAC,iBAAiB,EAAE,EAAE,CAAC,IAAI,CAAC,uBAAuB,EAAE,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,yCAAK;gBAChG,cAAc,EAAE,IAAI,CAAC,uBAAuB,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,oBAAoB,EAAE,CAAC,CAAC,CAAC,yCAAK;gBACpF,YAAY,EACR,CAAC,UAAU;oBACP,CAAC;wBACD,oBAAC,kBAAkB,IACf,KAAK,EAAE,EAAC,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,EAAE,EAAC,EACtC,KAAK,EAAE,IAAI,CAAC,YAAY,CAAC,EACzB,OAAO,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAC,mBAAmB,EAAE,IAAI,EAAC,CAAC,GAC3D;oBACF,CAAC;wBACD,SAAS;aACpB,EACD,eAAe,EAAE;gBACb,SAAS,EAAE,IAAI,CAAC,uBAAuB,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;gBACjD,MAAM,EAAE,qBAAqB;aAChC,EACD,YAAY,EAAE;gBACV,QAAQ,EAAE,IAAI,CAAC,kBAAkB;aACpC,EACD,UAAU,EAAE,EAAC,OAAO,EAAE,CAAC,EAAC,EACxB,kBAAkB,EAAE,KAAK,EACzB,wBAAwB,EAAE,GAAG,EAAE;gBAC3B,IAAI,IAAI,CAAC,cAAc,EAAE,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;oBACrC,OAAO,IAAI,CAAC,wBAAwB,EAAE,CAAC;gBAC3C,CAAC;gBACD,OAAO,gCAAM,CAAA;YACjB,CAAC,EACD,kBAAkB,EAAE,IAAI,CAAC,kBAAkB,EAC3C,eAAe,QACf,6BAA6B,QAC7B,iCAAiC,SACnC,CACL,CAAC;IACN,CAAC;IAEO,aAAa;QACjB,OAAO,CACH,6BAAK,KAAK,EAAE,EAAC,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,cAAc,EAAE,QAAQ,EAAE,UAAU,EAAE,QAAQ,EAAC;YACpG,oBAAC,IAAI,IACD,SAAS,EACL,oBAAC,eAAe,IAAC,KAAK,EAAE,EAAC,QAAQ,EAAE,EAAE,EAAC,EAAE,IAAI,SAAE,GAEpD,CACA,CACT,CAAA;IACL,CAAC;IAED,MAAM;QACF,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC;YACrB,OAAO,IAAI,CAAC,aAAa,EAAE,CAAC;QAChC,CAAC;QAED,OAAO,CACH,6BAAK,KAAK,EAAE,EAAC,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,EAAC;YACxE,IAAI,CAAC,2BAA2B,EAAE;YAClC,IAAI,CAAC,uBAAuB,EAAE;YAC9B,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CACrB,CACT,CAAC;IACN,CAAC;CAEJ","sourcesContent":["import React from \"react\";\r\nimport Entity from \"../../../api/types/entity\";\r\nimport {DataGridColDef} from \"d2coreui/components/grid/dataGrid\";\r\nimport {GridApi, GridReadyEvent, SelectionChangedEvent, RowDoubleClickedEvent} from \"ag-grid-community\";\r\nimport {Button} from \"antd\";\r\nimport i18n from \"d2core/i18n/i18n\";\r\nimport {\r\n CloseCircleOutlined,\r\n DeleteOutlined,\r\n FullscreenOutlined,\r\n LoadingOutlined,\r\n PlusCircleOutlined\r\n} from \"@ant-design/icons\";\r\nimport {ModalDialog, ModalDialogMode} from \"d2coreui/components/modal/modalDialog\";\r\nimport ExtendedDataGrid from \"d2coreui/components/grid/extendedDataGrid\";\r\nimport {ERROR_COLOR, WARNING_COLOR} from \"../../../api/constants/constants\";\r\nimport Spin from \"antd/lib/spin\";\r\n\r\nexport interface AbstractEntitiesOnEntityListProps<ME extends Entity> {\r\n editedEntity: ME\r\n height: number\r\n disabled?: boolean\r\n isHighlighted?: boolean\r\n isError?: boolean\r\n loading?: boolean\r\n\r\n onChange?(): void\r\n}\r\n\r\nexport interface AbstractEntitiesOnEntityListState<SE extends Entity> {\r\n selectedRecords: SE[]\r\n selectModalDialogVisible: boolean\r\n columnDefs: DataGridColDef[]\r\n fullscreenModalOpen: boolean\r\n}\r\n\r\nexport abstract class AbstractEntitiesOnEntityList<\r\n ME extends Entity,\r\n SE extends Entity,\r\n P extends AbstractEntitiesOnEntityListProps<ME>,\r\n S extends AbstractEntitiesOnEntityListState<SE>\r\n> extends React.Component<P, S> {\r\n protected gridApi?: GridApi;\r\n protected fullscreenGridApi?: GridApi;\r\n protected initialColumnDefs?: DataGridColDef[];\r\n\r\n protected constructor(props: Readonly<P>) {\r\n super(props);\r\n\r\n this.onSelectionChanged = this.onSelectionChanged.bind(this);\r\n this.renderControlPanel = this.renderControlPanel.bind(this);\r\n this.onExcludeRecords = this.onExcludeRecords.bind(this);\r\n this.onRowDoubleClicked = this.onRowDoubleClicked.bind(this);\r\n }\r\n\r\n protected initialState: AbstractEntitiesOnEntityListState<SE> = {\r\n selectedRecords: [],\r\n selectModalDialogVisible: false,\r\n columnDefs: this.getInitialColumnDefs(),\r\n fullscreenModalOpen: false,\r\n }\r\n\r\n componentDidUpdate(prevProps: Readonly<P>) {\r\n if (prevProps.disabled !== this.props.disabled || prevProps.editedEntity.id !== this.props.editedEntity.id) {\r\n this.gridApi?.updateGridOptions({rowData: this.getSubEntities()});\r\n }\r\n }\r\n\r\n abstract getInitialColumnDefs(): DataGridColDef[];\r\n\r\n abstract getSubEntities(): SE[];\r\n\r\n protected renderSelectModalDialog(): React.ReactNode | undefined {\r\n return undefined;\r\n }\r\n\r\n protected renderControlPanel(): JSX.Element | null {\r\n return null;\r\n }\r\n\r\n protected noRecordsOverlayRenderer() {\r\n return <div/>\r\n }\r\n\r\n protected onExcludeRecords() {\r\n const subEntities = this.getSubEntities();\r\n\r\n this.state.selectedRecords.forEach(subEntityToExclude => {\r\n const index = subEntities.findIndex(value => value.id === subEntityToExclude.id);\r\n subEntities.splice(index, 1);\r\n });\r\n\r\n this.props.onChange?.();\r\n if (this.state.fullscreenModalOpen) {\r\n this.fullscreenGridApi?.applyTransaction({remove: this.state.selectedRecords});\r\n } else {\r\n this.gridApi?.applyTransaction({remove: this.state.selectedRecords});\r\n }\r\n }\r\n\r\n protected renderToolbarButtons() {\r\n return <>\r\n <Button\r\n title={i18n(\"Add Record\")}\r\n disabled={this.props.disabled}\r\n onClick={() => {\r\n this.setState({selectModalDialogVisible: true});\r\n }}\r\n >\r\n <PlusCircleOutlined/>\r\n </Button>\r\n <Button\r\n title={i18n(\"Exclude Record\")}\r\n disabled={this.state.selectedRecords.length === 0 || this.props.disabled}\r\n onClick={() => {\r\n ModalDialog.delete({\r\n mode: ModalDialogMode.YES_NO,\r\n title:\r\n <span style={{whiteSpace: \"nowrap\"}}>\r\n {i18n(\"Exclude %n records?\", this.state.selectedRecords.length)}\r\n </span>,\r\n icon: <DeleteOutlined style={{color: ERROR_COLOR}}/>,\r\n onOk: this.onExcludeRecords\r\n });\r\n }}\r\n >\r\n <CloseCircleOutlined/>\r\n </Button>\r\n </>;\r\n }\r\n\r\n private onSelectionChanged(event: SelectionChangedEvent): void {\r\n const selectedRows = event.api.getSelectedRows();\r\n this.setState({selectedRecords: selectedRows});\r\n }\r\n\r\n protected addRecordsToGrid(records: SE[], idToSelect?: number) {\r\n if (records.length > 0) {\r\n if (this.state.fullscreenModalOpen) {\r\n this.fullscreenGridApi?.applyTransaction({add: records});\r\n } else {\r\n this.gridApi?.applyTransaction({add: records});\r\n }\r\n this.props.onChange?.();\r\n }\r\n\r\n if (idToSelect !== undefined) {\r\n let rowNode;\r\n if (this.state.fullscreenModalOpen) {\r\n rowNode = this.fullscreenGridApi?.getRowNode(idToSelect.toString());\r\n this.fullscreenGridApi?.ensureNodeVisible(rowNode);\r\n } else {\r\n rowNode = this.gridApi?.getRowNode(idToSelect.toString());\r\n this.gridApi?.ensureNodeVisible(rowNode);\r\n }\r\n\r\n rowNode?.setSelected(true, true);\r\n }\r\n }\r\n\r\n protected onRowDoubleClicked(_event: RowDoubleClickedEvent) {\r\n }\r\n\r\n private renderFullScreenModalDialog() {\r\n return (\r\n <ModalDialog\r\n styles={{body: {paddingTop: 0}}}\r\n mode={ModalDialogMode.NO_BUTTONS}\r\n open={this.state.fullscreenModalOpen}\r\n onCancel={() => this.setState({fullscreenModalOpen: false})}\r\n afterClose={() => {\r\n if (this.renderSelectModalDialog()) {\r\n this.gridApi?.updateGridOptions({rowData: this.getSubEntities()});\r\n } else {\r\n this.gridApi?.refreshCells({force: true});\r\n }\r\n }}\r\n title={i18n(\"Fullscreen\")}\r\n initialWidth={800}\r\n initialHeight={window.innerHeight - 20}\r\n >\r\n {this.renderGrid(true)}\r\n </ModalDialog>\r\n )\r\n }\r\n\r\n protected renderGrid(fullscreen: boolean) {\r\n const subEntities = this.getSubEntities();\r\n\r\n let tablePanelStyleBorder: React.CSSProperties[\"border\"] = \"unset\";\r\n if (this.props.isHighlighted) {\r\n tablePanelStyleBorder = `1px solid ${WARNING_COLOR}`;\r\n } else if (this.props.isError) {\r\n tablePanelStyleBorder = `1px solid ${ERROR_COLOR}`;\r\n }\r\n\r\n return (\r\n <ExtendedDataGrid\r\n onGridReady={(params: GridReadyEvent) => {\r\n if (fullscreen) {\r\n this.fullscreenGridApi = params.api;\r\n } else {\r\n this.gridApi = params.api;\r\n }\r\n }}\r\n defaultGridConfiguration={{pageSize: -1}}\r\n columnDefs={this.state.columnDefs}\r\n rowData={subEntities}\r\n onLoadData={(callback) => {\r\n callback(subEntities.length);\r\n }}\r\n search={{\r\n hidden: true,\r\n searchButtonHidden: true,\r\n }}\r\n rowSelection=\"multiple\"\r\n onSelectionChanged={this.onSelectionChanged}\r\n toolbar={{\r\n renderToolbar: (originalSearchBar) => this.renderSelectModalDialog() ? originalSearchBar : <></>,\r\n toolbarButtons: this.renderSelectModalDialog() ? this.renderToolbarButtons() : <></>,\r\n extraContent:\r\n !fullscreen\r\n ?\r\n <FullscreenOutlined\r\n style={{cursor: \"pointer\", height: 32}}\r\n title={i18n(\"Fullscreen\")}\r\n onClick={() => this.setState({fullscreenModalOpen: true})}\r\n />\r\n :\r\n undefined\r\n }}\r\n tablePanelStyle={{\r\n marginTop: this.renderSelectModalDialog() ? 4 : 0,\r\n border: tablePanelStyleBorder,\r\n }}\r\n controlPanel={{\r\n renderer: this.renderControlPanel\r\n }}\r\n panelStyle={{padding: 0}}\r\n tableConfigVisible={false}\r\n noRecordsOverlayRenderer={() => {\r\n if (this.getSubEntities().length === 0) {\r\n return this.noRecordsOverlayRenderer();\r\n }\r\n return <div/>\r\n }}\r\n onRowDoubleClicked={this.onRowDoubleClicked}\r\n singleClickEdit\r\n stopEditingWhenCellsLoseFocus\r\n enterNavigatesVerticallyAfterEdit\r\n />\r\n );\r\n }\r\n\r\n private renderLoading() {\r\n return (\r\n <div style={{height: this.props.height, display: \"flex\", justifyContent: \"center\", alignItems: \"center\"}}>\r\n <Spin\r\n indicator={\r\n <LoadingOutlined style={{fontSize: 48}} spin/>\r\n }\r\n />\r\n </div>\r\n )\r\n }\r\n\r\n render() {\r\n if (this.props.loading) {\r\n return this.renderLoading();\r\n }\r\n\r\n return (\r\n <div style={{height: this.props.height, overflow: \"auto\", resize: \"vertical\"}}>\r\n {this.renderFullScreenModalDialog()}\r\n {this.renderSelectModalDialog()}\r\n {this.renderGrid(false)}\r\n </div>\r\n );\r\n }\r\n\r\n}"]}
@@ -1,11 +1,11 @@
1
1
  import React from "react";
2
2
  import { CalendarOutlined, FullscreenOutlined, IssuesCloseOutlined, ZoomInOutlined, ZoomOutOutlined } from "@ant-design/icons";
3
3
  import i18n from "d2core/i18n/i18n";
4
- import { Popover } from "antd";
4
+ import { Popover, Space } from "antd";
5
5
  import { CHART_CALENDAR_HOLIDAY_COLOR, CHART_CALENDAR_SATURDAY_COLOR, CHART_CALENDAR_SUNDAY_COLOR } from "../../../api/constants/d2ChartConstants";
6
- import { PRIMARY_COLOR, WARNING_COLOR } from "../../../api/constants/constants";
7
6
  import dayjs from "d2core/dayjs";
8
7
  import { LocaleHolder } from "d2core/i18n/localeHolder";
8
+ import WithToken from "../../style/withToken";
9
9
  export default class D2ChartToolboxPanel extends React.Component {
10
10
  constructor(props) {
11
11
  super(props);
@@ -13,11 +13,11 @@ export default class D2ChartToolboxPanel extends React.Component {
13
13
  zoomEnabled: false,
14
14
  };
15
15
  }
16
- renderZoomInIcon(iconMargin) {
16
+ renderZoomInIcon(iconMargin, activeColor) {
17
17
  return (React.createElement(ZoomInOutlined, { style: {
18
18
  cursor: "pointer",
19
19
  margin: `0px ${iconMargin}px`,
20
- color: this.state.zoomEnabled ? "#2998ff" : "rgba(0, 0, 0, 0.5)",
20
+ color: this.state.zoomEnabled ? activeColor : undefined,
21
21
  }, title: i18n(`${this.state.zoomEnabled ? "Deactivate" : "Activate"} Zoom`), onClick: () => {
22
22
  const zoomEnabled = !this.state.zoomEnabled;
23
23
  this.setState({ zoomEnabled: zoomEnabled });
@@ -32,12 +32,12 @@ export default class D2ChartToolboxPanel extends React.Component {
32
32
  this.props.onZoomReset?.();
33
33
  } }));
34
34
  }
35
- renderMissingDataIcon(iconMargin) {
35
+ renderMissingDataIcon(iconMargin, missingDataColor, activeColor) {
36
36
  const missingData = this.props.missingData;
37
37
  const icon = React.createElement(IssuesCloseOutlined, { style: {
38
38
  cursor: "pointer",
39
39
  margin: `0px ${iconMargin}px`,
40
- color: this.props.missingDataVisible ? (missingData.length > 0 ? WARNING_COLOR : PRIMARY_COLOR) : "rgba(0, 0, 0, 0.5)",
40
+ color: this.props.missingDataVisible ? (missingData.length > 0 ? missingDataColor : activeColor) : undefined,
41
41
  }, title: i18n(`${this.props.missingDataVisible ? "Hide" : "Show"} Missing Data`), onClick: () => {
42
42
  this.props.onSwitchMissingData?.();
43
43
  } });
@@ -68,49 +68,40 @@ export default class D2ChartToolboxPanel extends React.Component {
68
68
  this.props.onFullScreen?.();
69
69
  } }));
70
70
  }
71
- renderCalendarIcon(iconMargin) {
72
- return (React.createElement(Popover, { mouseEnterDelay: 0.8, content: React.createElement("div", { style: { width: 92, padding: "3px 4px 2px" } },
73
- React.createElement("div", { style: {
74
- backgroundColor: CHART_CALENDAR_SATURDAY_COLOR,
75
- textAlign: "center",
76
- marginBottom: 2
77
- } },
78
- React.createElement("span", { style: { color: "#000" } }, i18n("Saturday"))),
79
- React.createElement("div", { style: {
80
- backgroundColor: CHART_CALENDAR_SUNDAY_COLOR,
81
- textAlign: "center",
82
- marginBottom: 2
83
- } },
84
- React.createElement("span", { style: { color: "#000" } }, i18n("Sunday"))),
85
- React.createElement("div", { style: { backgroundColor: CHART_CALENDAR_HOLIDAY_COLOR, textAlign: "center" } },
86
- React.createElement("span", { style: { color: "#000" } }, i18n("Holiday")))) },
71
+ renderCalendarIcon(iconMargin, activeColor) {
72
+ return (React.createElement(Popover, { mouseEnterDelay: 0.8, content: React.createElement(Space, { style: { width: 92, textAlign: "center" }, direction: "vertical", size: 4 },
73
+ React.createElement("div", { style: { backgroundColor: CHART_CALENDAR_SATURDAY_COLOR } },
74
+ React.createElement("span", null, i18n("Saturday"))),
75
+ React.createElement("div", { style: { backgroundColor: CHART_CALENDAR_SUNDAY_COLOR } },
76
+ React.createElement("span", null, i18n("Sunday"))),
77
+ React.createElement("div", { style: { backgroundColor: CHART_CALENDAR_HOLIDAY_COLOR } },
78
+ React.createElement("span", null, i18n("Holiday")))) },
87
79
  React.createElement(CalendarOutlined, { style: {
88
80
  cursor: "pointer",
89
81
  margin: `0px ${iconMargin}px`,
90
- color: this.props.calendarDataVisible ? "#2998ff" : "rgba(0, 0, 0, 0.5)",
82
+ color: this.props.calendarDataVisible ? activeColor : undefined,
91
83
  }, title: i18n(`${this.props.calendarDataVisible ? "Hide" : "Show"} Calendar Data`), onClick: () => {
92
84
  this.props.onSwitchCalendarData?.();
93
85
  } })));
94
86
  }
95
87
  render() {
96
88
  const iconMargin = 2;
97
- return (React.createElement("div", { style: {
89
+ return (React.createElement(WithToken, null, token => (React.createElement("div", { style: {
98
90
  position: "absolute",
99
91
  top: 1,
100
92
  right: 0,
101
93
  fontSize: this.props.compact ? 18 : 28,
102
- color: "rgba(0, 0, 0, 0.5)",
94
+ color: token.colorTextTertiary,
103
95
  display: "flex",
104
96
  justifyContent: "end",
105
97
  margin: this.props.compact ? "4px 4px 0px" : "0px 32px",
106
- backgroundColor: "white",
107
98
  zIndex: 1,
108
99
  } },
109
- this.renderZoomInIcon(iconMargin),
100
+ this.renderZoomInIcon(iconMargin, token.colorPrimary),
110
101
  this.renderZoomOutIcon(iconMargin),
111
- this.props.showCalendarIcon && this.renderCalendarIcon(iconMargin),
112
- this.renderMissingDataIcon(iconMargin),
113
- this.props.compact && this.renderFullScreenIcon(iconMargin)));
102
+ this.props.showCalendarIcon && this.renderCalendarIcon(iconMargin, token.colorPrimary),
103
+ this.renderMissingDataIcon(iconMargin, token.colorWarning, token.colorPrimary),
104
+ this.props.compact && this.renderFullScreenIcon(iconMargin)))));
114
105
  }
115
106
  }
116
107
  //# sourceMappingURL=d2ChartToolboxPanel.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"d2ChartToolboxPanel.js","sourceRoot":"","sources":["../../../../../coreui/components/d2Chart/d2ChartToolboxPanel.tsx"],"names":[],"mappings":"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","sourcesContent":["import React from \"react\";\r\nimport {\r\n CalendarOutlined,\r\n FullscreenOutlined,\r\n IssuesCloseOutlined,\r\n ZoomInOutlined,\r\n ZoomOutOutlined\r\n} from \"@ant-design/icons\";\r\nimport i18n from \"d2core/i18n/i18n\";\r\nimport {Popover} from \"antd\";\r\nimport {\r\n CHART_CALENDAR_HOLIDAY_COLOR,\r\n CHART_CALENDAR_SATURDAY_COLOR,\r\n CHART_CALENDAR_SUNDAY_COLOR\r\n} from \"../../../api/constants/d2ChartConstants\";\r\nimport {PRIMARY_COLOR, WARNING_COLOR} from \"../../../api/constants/constants\";\r\nimport dayjs from \"d2core/dayjs\";\r\nimport {LocaleHolder} from \"d2core/i18n/localeHolder\";\r\nimport {MarkAreaData} from \"../../../api/types/d2ChartTypes\";\r\n\r\ninterface ChartToolboxPanelProps {\r\n missingData: MarkAreaData[][]\r\n calendarDataVisible?: boolean\r\n missingDataVisible?: boolean\r\n showCalendarIcon?: boolean\r\n compact?: boolean\r\n\r\n onZoomControlSwitch(zoomEnabled: boolean): void\r\n\r\n onZoomReset(): void\r\n\r\n onFullScreen?(): void\r\n\r\n onSwitchCalendarData?(): void\r\n\r\n onSwitchMissingData?(): void\r\n}\r\n\r\ninterface ChartToolboxPanelState {\r\n zoomEnabled: boolean\r\n}\r\n\r\nexport default class D2ChartToolboxPanel extends React.Component<ChartToolboxPanelProps, ChartToolboxPanelState> {\r\n constructor(props: Readonly<ChartToolboxPanelProps>) {\r\n super(props);\r\n\r\n this.state = {\r\n zoomEnabled: false,\r\n }\r\n }\r\n\r\n private renderZoomInIcon(iconMargin: number) {\r\n return (\r\n <ZoomInOutlined\r\n style={{\r\n cursor: \"pointer\",\r\n margin: `0px ${iconMargin}px`,\r\n color: this.state.zoomEnabled ? \"#2998ff\" : \"rgba(0, 0, 0, 0.5)\",\r\n }}\r\n title={i18n(`${this.state.zoomEnabled ? \"Deactivate\" : \"Activate\"} Zoom`)}\r\n onClick={() => {\r\n const zoomEnabled = !this.state.zoomEnabled\r\n this.setState({zoomEnabled: zoomEnabled});\r\n this.props.onZoomControlSwitch?.(zoomEnabled);\r\n }}\r\n />\r\n );\r\n }\r\n\r\n private renderZoomOutIcon(iconMargin: number) {\r\n return (\r\n <ZoomOutOutlined\r\n style={{\r\n cursor: \"pointer\",\r\n margin: `0px ${iconMargin}px`,\r\n }}\r\n title={i18n(\"Zoom Reset\")}\r\n onClick={() => {\r\n this.props.onZoomReset?.();\r\n }}\r\n />\r\n );\r\n }\r\n\r\n private renderMissingDataIcon(iconMargin: number) {\r\n const missingData = this.props.missingData;\r\n\r\n const icon =\r\n <IssuesCloseOutlined\r\n style={{\r\n cursor: \"pointer\",\r\n margin: `0px ${iconMargin}px`,\r\n color: this.props.missingDataVisible ? (missingData.length > 0 ? WARNING_COLOR : PRIMARY_COLOR) : \"rgba(0, 0, 0, 0.5)\",\r\n }}\r\n title={i18n(`${this.props.missingDataVisible ? \"Hide\" : \"Show\"} Missing Data`)}\r\n onClick={() => {\r\n this.props.onSwitchMissingData?.();\r\n }}\r\n />\r\n\r\n if (this.props.missingDataVisible) {\r\n return (\r\n <Popover\r\n mouseEnterDelay={0.8}\r\n placement=\"topRight\"\r\n title={<span><CalendarOutlined/> {i18n(\"Missing Data Periods\")}</span>}\r\n content={\r\n <div style={{width: 220, maxHeight: 400, overflow: \"auto\", fontSize: 13}}>\r\n {missingData.length === 0 && <span>{i18n(\"No missing data\")}</span>}\r\n {\r\n missingData.map((value, index) => {\r\n const from = dayjs(value[0].xAxis).format(LocaleHolder.getDateTimeFormat(true, false, false));\r\n const to = dayjs(value[1].xAxis).format(LocaleHolder.getDateTimeFormat(true, false, false));\r\n\r\n return <div key={index}>{from} - {to}</div>\r\n })\r\n }\r\n </div>\r\n }\r\n >\r\n {icon}\r\n </Popover>\r\n );\r\n } else {\r\n return icon;\r\n }\r\n }\r\n\r\n private renderFullScreenIcon(iconMargin: number) {\r\n return (\r\n <FullscreenOutlined\r\n style={{\r\n cursor: \"pointer\",\r\n margin: `0px ${iconMargin}px`,\r\n }}\r\n title={i18n(\"Fullscreen\")}\r\n onClick={() => {\r\n this.props.onFullScreen?.();\r\n }}\r\n />\r\n );\r\n }\r\n\r\n private renderCalendarIcon(iconMargin: number) {\r\n return (\r\n <Popover\r\n mouseEnterDelay={0.8}\r\n content={\r\n <div style={{width: 92, padding: \"3px 4px 2px\"}}>\r\n <div style={{\r\n backgroundColor: CHART_CALENDAR_SATURDAY_COLOR,\r\n textAlign: \"center\",\r\n marginBottom: 2\r\n }}>\r\n <span style={{color: \"#000\"}}>{i18n(\"Saturday\")}</span>\r\n </div>\r\n <div style={{\r\n backgroundColor: CHART_CALENDAR_SUNDAY_COLOR,\r\n textAlign: \"center\",\r\n marginBottom: 2\r\n }}>\r\n <span style={{color: \"#000\"}}>{i18n(\"Sunday\")}</span>\r\n </div>\r\n <div style={{backgroundColor: CHART_CALENDAR_HOLIDAY_COLOR, textAlign: \"center\"}}>\r\n <span style={{color: \"#000\"}}>{i18n(\"Holiday\")}</span>\r\n </div>\r\n </div>\r\n }\r\n >\r\n <CalendarOutlined\r\n style={{\r\n cursor: \"pointer\",\r\n margin: `0px ${iconMargin}px`,\r\n color: this.props.calendarDataVisible ? \"#2998ff\" : \"rgba(0, 0, 0, 0.5)\",\r\n }}\r\n title={i18n(`${this.props.calendarDataVisible ? \"Hide\" : \"Show\"} Calendar Data`)}\r\n onClick={() => {\r\n this.props.onSwitchCalendarData?.();\r\n }}\r\n />\r\n </Popover>\r\n );\r\n }\r\n\r\n render() {\r\n const iconMargin = 2;\r\n\r\n return (\r\n <div\r\n style={{\r\n position: \"absolute\",\r\n top: 1,\r\n right: 0,\r\n fontSize: this.props.compact ? 18 : 28,\r\n color: \"rgba(0, 0, 0, 0.5)\",\r\n display: \"flex\",\r\n justifyContent: \"end\",\r\n margin: this.props.compact ? \"4px 4px 0px\" : \"0px 32px\",\r\n backgroundColor: \"white\",\r\n zIndex: 1,\r\n }}\r\n >\r\n {this.renderZoomInIcon(iconMargin)}\r\n {this.renderZoomOutIcon(iconMargin)}\r\n {this.props.showCalendarIcon && this.renderCalendarIcon(iconMargin)}\r\n {this.renderMissingDataIcon(iconMargin)}\r\n {this.props.compact && this.renderFullScreenIcon(iconMargin)}\r\n </div>\r\n );\r\n }\r\n\r\n}"]}
1
+ {"version":3,"file":"d2ChartToolboxPanel.js","sourceRoot":"","sources":["../../../../../coreui/components/d2Chart/d2ChartToolboxPanel.tsx"],"names":[],"mappings":"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","sourcesContent":["import React from \"react\";\r\nimport {\r\n CalendarOutlined,\r\n FullscreenOutlined,\r\n IssuesCloseOutlined,\r\n ZoomInOutlined,\r\n ZoomOutOutlined\r\n} from \"@ant-design/icons\";\r\nimport i18n from \"d2core/i18n/i18n\";\r\nimport {Popover, Space} from \"antd\";\r\nimport {\r\n CHART_CALENDAR_HOLIDAY_COLOR,\r\n CHART_CALENDAR_SATURDAY_COLOR,\r\n CHART_CALENDAR_SUNDAY_COLOR\r\n} from \"../../../api/constants/d2ChartConstants\";\r\nimport dayjs from \"d2core/dayjs\";\r\nimport {LocaleHolder} from \"d2core/i18n/localeHolder\";\r\nimport {MarkAreaData} from \"../../../api/types/d2ChartTypes\";\r\nimport WithToken from \"../../style/withToken\";\r\n\r\ninterface ChartToolboxPanelProps {\r\n missingData: MarkAreaData[][]\r\n calendarDataVisible?: boolean\r\n missingDataVisible?: boolean\r\n showCalendarIcon?: boolean\r\n compact?: boolean\r\n\r\n onZoomControlSwitch(zoomEnabled: boolean): void\r\n\r\n onZoomReset(): void\r\n\r\n onFullScreen?(): void\r\n\r\n onSwitchCalendarData?(): void\r\n\r\n onSwitchMissingData?(): void\r\n}\r\n\r\ninterface ChartToolboxPanelState {\r\n zoomEnabled: boolean\r\n}\r\n\r\nexport default class D2ChartToolboxPanel extends React.Component<ChartToolboxPanelProps, ChartToolboxPanelState> {\r\n constructor(props: Readonly<ChartToolboxPanelProps>) {\r\n super(props);\r\n\r\n this.state = {\r\n zoomEnabled: false,\r\n }\r\n }\r\n\r\n private renderZoomInIcon(iconMargin: number, activeColor: string) {\r\n return (\r\n <ZoomInOutlined\r\n style={{\r\n cursor: \"pointer\",\r\n margin: `0px ${iconMargin}px`,\r\n color: this.state.zoomEnabled ? activeColor : undefined,\r\n }}\r\n title={i18n(`${this.state.zoomEnabled ? \"Deactivate\" : \"Activate\"} Zoom`)}\r\n onClick={() => {\r\n const zoomEnabled = !this.state.zoomEnabled\r\n this.setState({zoomEnabled: zoomEnabled});\r\n this.props.onZoomControlSwitch?.(zoomEnabled);\r\n }}\r\n />\r\n );\r\n }\r\n\r\n private renderZoomOutIcon(iconMargin: number) {\r\n return (\r\n <ZoomOutOutlined\r\n style={{\r\n cursor: \"pointer\",\r\n margin: `0px ${iconMargin}px`,\r\n }}\r\n title={i18n(\"Zoom Reset\")}\r\n onClick={() => {\r\n this.props.onZoomReset?.();\r\n }}\r\n />\r\n );\r\n }\r\n\r\n private renderMissingDataIcon(iconMargin: number, missingDataColor: string, activeColor: string) {\r\n const missingData = this.props.missingData;\r\n\r\n const icon =\r\n <IssuesCloseOutlined\r\n style={{\r\n cursor: \"pointer\",\r\n margin: `0px ${iconMargin}px`,\r\n color: this.props.missingDataVisible ? (missingData.length > 0 ? missingDataColor : activeColor) : undefined,\r\n }}\r\n title={i18n(`${this.props.missingDataVisible ? \"Hide\" : \"Show\"} Missing Data`)}\r\n onClick={() => {\r\n this.props.onSwitchMissingData?.();\r\n }}\r\n />\r\n\r\n if (this.props.missingDataVisible) {\r\n return (\r\n <Popover\r\n mouseEnterDelay={0.8}\r\n placement=\"topRight\"\r\n title={<span><CalendarOutlined/> {i18n(\"Missing Data Periods\")}</span>}\r\n content={\r\n <div style={{width: 220, maxHeight: 400, overflow: \"auto\", fontSize: 13}}>\r\n {missingData.length === 0 && <span>{i18n(\"No missing data\")}</span>}\r\n {\r\n missingData.map((value, index) => {\r\n const from = dayjs(value[0].xAxis).format(LocaleHolder.getDateTimeFormat(true, false, false));\r\n const to = dayjs(value[1].xAxis).format(LocaleHolder.getDateTimeFormat(true, false, false));\r\n\r\n return <div key={index}>{from} - {to}</div>\r\n })\r\n }\r\n </div>\r\n }\r\n >\r\n {icon}\r\n </Popover>\r\n );\r\n } else {\r\n return icon;\r\n }\r\n }\r\n\r\n private renderFullScreenIcon(iconMargin: number) {\r\n return (\r\n <FullscreenOutlined\r\n style={{\r\n cursor: \"pointer\",\r\n margin: `0px ${iconMargin}px`,\r\n }}\r\n title={i18n(\"Fullscreen\")}\r\n onClick={() => {\r\n this.props.onFullScreen?.();\r\n }}\r\n />\r\n );\r\n }\r\n\r\n private renderCalendarIcon(iconMargin: number, activeColor: string) {\r\n return (\r\n <Popover\r\n mouseEnterDelay={0.8}\r\n content={\r\n <Space\r\n style={{width: 92, textAlign: \"center\"}}\r\n direction=\"vertical\"\r\n size={4}\r\n >\r\n <div style={{backgroundColor: CHART_CALENDAR_SATURDAY_COLOR}}>\r\n <span>{i18n(\"Saturday\")}</span>\r\n </div>\r\n <div style={{backgroundColor: CHART_CALENDAR_SUNDAY_COLOR}}>\r\n <span>{i18n(\"Sunday\")}</span>\r\n </div>\r\n <div style={{backgroundColor: CHART_CALENDAR_HOLIDAY_COLOR}}>\r\n <span>{i18n(\"Holiday\")}</span>\r\n </div>\r\n </Space>\r\n }\r\n >\r\n <CalendarOutlined\r\n style={{\r\n cursor: \"pointer\",\r\n margin: `0px ${iconMargin}px`,\r\n color: this.props.calendarDataVisible ? activeColor : undefined,\r\n }}\r\n title={i18n(`${this.props.calendarDataVisible ? \"Hide\" : \"Show\"} Calendar Data`)}\r\n onClick={() => {\r\n this.props.onSwitchCalendarData?.();\r\n }}\r\n />\r\n </Popover>\r\n );\r\n }\r\n\r\n render() {\r\n const iconMargin = 2;\r\n\r\n return (\r\n <WithToken>\r\n {token => (\r\n <div\r\n style={{\r\n position: \"absolute\",\r\n top: 1,\r\n right: 0,\r\n fontSize: this.props.compact ? 18 : 28,\r\n color: token.colorTextTertiary,\r\n display: \"flex\",\r\n justifyContent: \"end\",\r\n margin: this.props.compact ? \"4px 4px 0px\" : \"0px 32px\",\r\n zIndex: 1,\r\n }}\r\n >\r\n {this.renderZoomInIcon(iconMargin, token.colorPrimary)}\r\n {this.renderZoomOutIcon(iconMargin)}\r\n {this.props.showCalendarIcon && this.renderCalendarIcon(iconMargin, token.colorPrimary)}\r\n {this.renderMissingDataIcon(iconMargin, token.colorWarning, token.colorPrimary)}\r\n {this.props.compact && this.renderFullScreenIcon(iconMargin)}\r\n </div>\r\n )}\r\n </WithToken>\r\n );\r\n }\r\n\r\n}"]}
@@ -1 +1 @@
1
- {"version":3,"file":"webPushSwitch.js","sourceRoot":"","sources":["../../../../../coreui/components/webPush/webPushSwitch.tsx"],"names":[],"mappings":"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","sourcesContent":["import React from \"react\";\nimport {Switch} from \"antd\";\nimport i18n from \"d2core/i18n/i18n\";\nimport {WebPushApi} from \"../../../api/webPush/webPushApi\";\nimport WebPushUtils from \"../../../api/webPush/webPushUtils\";\nimport {EncodingUtils} from \"../../../api/encoding/encodingUtils\";\n\ninterface Props {\n webPushApi: WebPushApi\n}\n\ninterface State {\n loading: boolean\n isSubscribed: boolean\n}\n\nexport default class WebPushSwitch extends React.Component<Props, State> {\n constructor(props: Readonly<Props>) {\n super(props);\n\n this.state = {\n loading: true,\n isSubscribed: false,\n }\n }\n\n componentDidMount() {\n this.updateSubscriptionState();\n }\n\n private updateSubscriptionState() {\n WebPushUtils.getSubscription().then(subscription => {\n this.setState({\n isSubscribed: subscription !== null,\n loading: false,\n });\n });\n }\n\n private async subscribe() {\n const applicationServerKey = await this.props.webPushApi.getPublicVapidKey();\n\n // 1. Ask for notification permission\n const permission = await Notification.requestPermission();\n if (permission !== \"granted\") {\n alert(\"Notifications not allowed\");\n return;\n }\n\n // 2. Get service worker\n const registration = await navigator.serviceWorker.ready;\n\n // 3. Subscribe to push\n const subscription = await registration.pushManager.subscribe({\n userVisibleOnly: true,\n applicationServerKey: EncodingUtils.base64ToUint8Array(applicationServerKey),\n });\n\n await this.props.webPushApi.saveSubscription(subscription);\n }\n\n private async unsubscribe() {\n const subscription = await WebPushUtils.getSubscription();\n\n if (subscription) {\n const success = await subscription.unsubscribe();\n\n if (success) {\n console.log(\"Unsubscribed: \", subscription.endpoint);\n await this.props.webPushApi.deleteSubscription(subscription);\n } else {\n console.warn(\"Failed to unsubscribe.\");\n }\n } else {\n console.log(\"No subscription found.\");\n }\n }\n\n render() {\n return (\n <Switch\n loading={this.state.loading}\n checked={this.state.isSubscribed}\n checkedChildren={i18n(\"Notifications\")}\n unCheckedChildren={i18n(\"Notifications\")}\n onChange={async checked => {\n this.setState({loading: true});\n if (checked) {\n await this.subscribe();\n } else {\n await this.unsubscribe()\n }\n\n this.updateSubscriptionState();\n }}\n />\n );\n }\n\n}"]}
1
+ {"version":3,"file":"webPushSwitch.js","sourceRoot":"","sources":["../../../../../coreui/components/webPush/webPushSwitch.tsx"],"names":[],"mappings":"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","sourcesContent":["import React from \"react\";\r\nimport {Switch} from \"antd\";\r\nimport i18n from \"d2core/i18n/i18n\";\r\nimport {WebPushApi} from \"../../../api/webPush/webPushApi\";\r\nimport WebPushUtils from \"../../../api/webPush/webPushUtils\";\r\nimport {EncodingUtils} from \"../../../api/encoding/encodingUtils\";\r\n\r\ninterface Props {\r\n webPushApi: WebPushApi\r\n}\r\n\r\ninterface State {\r\n loading: boolean\r\n isSubscribed: boolean\r\n}\r\n\r\nexport default class WebPushSwitch extends React.Component<Props, State> {\r\n constructor(props: Readonly<Props>) {\r\n super(props);\r\n\r\n this.state = {\r\n loading: true,\r\n isSubscribed: false,\r\n }\r\n }\r\n\r\n componentDidMount() {\r\n this.updateSubscriptionState();\r\n }\r\n\r\n private updateSubscriptionState() {\r\n WebPushUtils.getSubscription().then(subscription => {\r\n this.setState({\r\n isSubscribed: subscription !== null,\r\n loading: false,\r\n });\r\n });\r\n }\r\n\r\n private async subscribe() {\r\n const applicationServerKey = await this.props.webPushApi.getPublicVapidKey();\r\n\r\n // 1. Ask for notification permission\r\n const permission = await Notification.requestPermission();\r\n if (permission !== \"granted\") {\r\n alert(\"Notifications not allowed\");\r\n return;\r\n }\r\n\r\n // 2. Get service worker\r\n const registration = await navigator.serviceWorker.ready;\r\n\r\n // 3. Subscribe to push\r\n const subscription = await registration.pushManager.subscribe({\r\n userVisibleOnly: true,\r\n applicationServerKey: EncodingUtils.base64ToUint8Array(applicationServerKey),\r\n });\r\n\r\n await this.props.webPushApi.saveSubscription(subscription);\r\n }\r\n\r\n private async unsubscribe() {\r\n const subscription = await WebPushUtils.getSubscription();\r\n\r\n if (subscription) {\r\n const success = await subscription.unsubscribe();\r\n\r\n if (success) {\r\n console.log(\"Unsubscribed: \", subscription.endpoint);\r\n await this.props.webPushApi.deleteSubscription(subscription);\r\n } else {\r\n console.warn(\"Failed to unsubscribe.\");\r\n }\r\n } else {\r\n console.log(\"No subscription found.\");\r\n }\r\n }\r\n\r\n render() {\r\n return (\r\n <Switch\r\n loading={this.state.loading}\r\n checked={this.state.isSubscribed}\r\n checkedChildren={i18n(\"Notifications\")}\r\n unCheckedChildren={i18n(\"Notifications\")}\r\n onChange={async checked => {\r\n this.setState({loading: true});\r\n if (checked) {\r\n await this.subscribe();\r\n } else {\r\n await this.unsubscribe()\r\n }\r\n\r\n this.updateSubscriptionState();\r\n }}\r\n />\r\n );\r\n }\r\n\r\n}"]}
@@ -1,9 +1,9 @@
1
- <?xml version="1.0" encoding="UTF-8" standalone="no"?>
2
- <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
3
- <svg width="100%" height="100%" viewBox="0 0 68 62" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve" xmlns:serif="http://www.serif.com/" style="fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:2;">
4
- <g transform="matrix(1,0,0,1,-172.565,-296.134)">
5
- <g transform="matrix(1,0,0,1,182.93,310.677)">
6
- <path d="M0,32.646L-10.365,32.646L-10.365,41.595L0,41.595C1.637,44.92 5.052,47.189 9.036,47.189C13.018,47.189 16.433,44.92 18.07,41.595L56.763,41.595L56.763,32.646L18.071,32.646C16.434,29.321 13.018,27.053 9.036,27.053C5.052,27.053 1.637,29.321 0,32.646M28.326,11.846L-10.365,11.846L-10.365,20.795L28.327,20.795C29.963,24.12 33.379,26.388 37.364,26.388C41.346,26.388 44.761,24.12 46.398,20.795L56.763,20.795L56.763,11.846L46.398,11.846C44.761,8.521 41.346,6.254 37.364,6.254C33.379,6.254 29.963,8.521 28.326,11.846M0.001,-8.951L-10.365,-8.951L-10.365,-0.003L0,-0.003C1.637,3.323 5.052,5.59 9.036,5.59C13.018,5.59 16.434,3.323 18.071,-0.003L56.763,-0.003L56.763,-8.951L18.07,-8.951C16.433,-12.276 13.018,-14.543 9.036,-14.543C5.052,-14.543 1.637,-12.276 0.001,-8.951" style="fill:rgb(1,52,255);"/>
7
- </g>
8
- </g>
9
- </svg>
1
+ <?xml version="1.0" encoding="UTF-8" standalone="no"?>
2
+ <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
3
+ <svg width="100%" height="100%" viewBox="0 0 68 62" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve" xmlns:serif="http://www.serif.com/" style="fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:2;">
4
+ <g transform="matrix(1,0,0,1,-172.565,-296.134)">
5
+ <g transform="matrix(1,0,0,1,182.93,310.677)">
6
+ <path d="M0,32.646L-10.365,32.646L-10.365,41.595L0,41.595C1.637,44.92 5.052,47.189 9.036,47.189C13.018,47.189 16.433,44.92 18.07,41.595L56.763,41.595L56.763,32.646L18.071,32.646C16.434,29.321 13.018,27.053 9.036,27.053C5.052,27.053 1.637,29.321 0,32.646M28.326,11.846L-10.365,11.846L-10.365,20.795L28.327,20.795C29.963,24.12 33.379,26.388 37.364,26.388C41.346,26.388 44.761,24.12 46.398,20.795L56.763,20.795L56.763,11.846L46.398,11.846C44.761,8.521 41.346,6.254 37.364,6.254C33.379,6.254 29.963,8.521 28.326,11.846M0.001,-8.951L-10.365,-8.951L-10.365,-0.003L0,-0.003C1.637,3.323 5.052,5.59 9.036,5.59C13.018,5.59 16.434,3.323 18.071,-0.003L56.763,-0.003L56.763,-8.951L18.07,-8.951C16.433,-12.276 13.018,-14.543 9.036,-14.543C5.052,-14.543 1.637,-12.276 0.001,-8.951" style="fill:rgb(1,52,255);"/>
7
+ </g>
8
+ </g>
9
+ </svg>
@@ -1,12 +1,12 @@
1
- <?xml version="1.0" encoding="UTF-8" standalone="no"?>
2
- <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
3
- <svg width="100%" height="100%" viewBox="172 295 459 64" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve" xmlns:serif="http://www.serif.com/" style="fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:2;">
4
- <g id="Layer-1" serif:id="Layer 1">
5
- <g transform="matrix(1,0,0,1,182.93,310.677)">
6
- <path d="M0,32.646L-10.365,32.646L-10.365,41.595L0,41.595C1.637,44.92 5.052,47.189 9.036,47.189C13.018,47.189 16.433,44.92 18.07,41.595L56.763,41.595L56.763,32.646L18.071,32.646C16.434,29.321 13.018,27.053 9.036,27.053C5.052,27.053 1.637,29.321 0,32.646M28.326,11.846L-10.365,11.846L-10.365,20.795L28.327,20.795C29.963,24.12 33.379,26.388 37.364,26.388C41.346,26.388 44.761,24.12 46.398,20.795L56.763,20.795L56.763,11.846L46.398,11.846C44.761,8.521 41.346,6.254 37.364,6.254C33.379,6.254 29.963,8.521 28.326,11.846M0.001,-8.951L-10.365,-8.951L-10.365,-0.003L0,-0.003C1.637,3.323 5.052,5.59 9.036,5.59C13.018,5.59 16.434,3.323 18.071,-0.003L56.763,-0.003L56.763,-8.951L18.07,-8.951C16.433,-12.276 13.018,-14.543 9.036,-14.543C5.052,-14.543 1.637,-12.276 0.001,-8.951" style="stroke:black;stroke-width:1px;"/>
7
- </g>
8
- <g transform="matrix(1,0,0,1,398.066,302.582)">
9
- <path d="M0,48.893L0,36.861C5.901,39.084 13.946,40.54 23.143,40.54C35.023,40.54 37.627,38.702 37.627,35.712C37.627,26.057 -1.533,34.947 -1.533,13.64C-1.533,3.141 7.357,-3.142 27.512,-3.142C34.18,-3.142 41,-2.223 46.441,-0.766L48.509,11.036C42.685,9.503 34.868,8.354 25.978,8.354C14.101,8.354 11.494,10.193 11.494,13.181C11.494,22.837 50.656,13.948 50.656,35.252C50.656,45.751 41.767,52.035 21.611,52.035C13.716,52.035 5.746,50.734 0,48.893M-62.23,24.447C-62.23,6.208 -51.96,-3.142 -29.429,-3.142C-23.759,-3.142 -17.168,-2.452 -11.19,-1.532L-9.198,10.27C-14.792,9.195 -22.533,8.354 -29.429,8.354C-43.071,8.354 -48.053,10.653 -49.277,19.083L-10.194,19.083L-10.194,29.812L-49.277,29.812C-48.053,38.242 -43.071,40.541 -29.429,40.541C-22.533,40.541 -14.792,39.698 -9.198,38.624L-11.19,50.426C-17.168,51.345 -23.759,52.035 -29.429,52.035C-51.96,52.035 -62.23,42.687 -62.23,24.447M56.481,24.447C56.481,5.365 66.214,-3.142 88.132,-3.142C110.051,-3.142 119.782,5.365 119.782,24.447C119.782,43.53 110.051,52.035 88.132,52.035C66.214,52.035 56.481,43.53 56.481,24.447M-120.167,-2.377L-95.184,-2.377C-76.331,-2.377 -68.055,4.215 -68.055,19.005C-68.055,33.797 -76.331,40.386 -95.184,40.386L-107.827,40.386L-107.827,51.27L-120.167,51.27L-120.167,-2.377ZM-144.688,-0.844L-132.426,-2.758L-132.426,51.269L-144.688,51.269L-144.688,-0.844ZM219.637,44.756C219.637,40.924 222.319,38.242 226.151,38.242C229.983,38.242 232.664,40.924 232.664,44.756C232.664,48.587 229.983,51.269 226.151,51.269C222.319,51.269 219.637,48.587 219.637,44.756M155.188,-3.142C161.318,-3.142 166.453,-2.682 171.127,-1.532L173.121,10.193C167.987,9.044 162.084,8.354 156.643,8.354C144.153,8.354 140.934,10.883 140.934,19.389L140.934,22.915L171.972,22.915L171.972,34.027L140.934,34.027L140.934,50.964L128.672,50.964L128.672,19.849C128.672,4.829 137.944,-3.142 155.188,-3.142M197.872,9.12L177.717,9.12L177.717,-2.375L230.366,-2.375L230.366,9.12L210.212,9.12L210.212,50.964L197.872,50.964L197.872,9.12ZM226.151,50.121C229.216,50.121 231.439,47.898 231.439,44.756C231.439,41.614 229.216,39.392 226.151,39.392C223.084,39.392 220.862,41.614 220.862,44.756C220.862,47.898 223.084,50.121 226.151,50.121M223.852,41.154L226.456,41.154C228.067,41.154 228.757,41.996 228.757,43.377C228.757,44.372 228.373,45.061 227.606,45.369L229.216,48.127L227.684,48.127L226.226,45.599L225.155,45.599L225.155,48.127L223.852,48.127L223.852,41.154ZM226.304,44.448C227.071,44.448 227.376,44.296 227.376,43.377C227.376,42.456 227.071,42.304 226.304,42.304L225.155,42.304L225.155,44.448L226.304,44.448ZM88.132,40.541C102.694,40.541 106.371,37.321 106.371,24.447C106.371,11.573 102.694,8.354 88.132,8.354C73.571,8.354 69.892,11.573 69.892,24.447C69.892,37.321 73.571,40.541 88.132,40.541M-92.272,28.892C-84.531,28.892 -81.081,26.21 -81.081,19.005C-81.081,12.108 -84.147,9.12 -92.272,9.12L-107.827,9.12L-107.827,28.892L-92.272,28.892Z" style="fill-rule:nonzero;"/>
10
- </g>
11
- </g>
1
+ <?xml version="1.0" encoding="UTF-8" standalone="no"?>
2
+ <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
3
+ <svg width="100%" height="100%" viewBox="172 295 459 64" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve" xmlns:serif="http://www.serif.com/" style="fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:2;">
4
+ <g id="Layer-1" serif:id="Layer 1">
5
+ <g transform="matrix(1,0,0,1,182.93,310.677)">
6
+ <path d="M0,32.646L-10.365,32.646L-10.365,41.595L0,41.595C1.637,44.92 5.052,47.189 9.036,47.189C13.018,47.189 16.433,44.92 18.07,41.595L56.763,41.595L56.763,32.646L18.071,32.646C16.434,29.321 13.018,27.053 9.036,27.053C5.052,27.053 1.637,29.321 0,32.646M28.326,11.846L-10.365,11.846L-10.365,20.795L28.327,20.795C29.963,24.12 33.379,26.388 37.364,26.388C41.346,26.388 44.761,24.12 46.398,20.795L56.763,20.795L56.763,11.846L46.398,11.846C44.761,8.521 41.346,6.254 37.364,6.254C33.379,6.254 29.963,8.521 28.326,11.846M0.001,-8.951L-10.365,-8.951L-10.365,-0.003L0,-0.003C1.637,3.323 5.052,5.59 9.036,5.59C13.018,5.59 16.434,3.323 18.071,-0.003L56.763,-0.003L56.763,-8.951L18.07,-8.951C16.433,-12.276 13.018,-14.543 9.036,-14.543C5.052,-14.543 1.637,-12.276 0.001,-8.951" style="stroke:black;stroke-width:1px;"/>
7
+ </g>
8
+ <g transform="matrix(1,0,0,1,398.066,302.582)">
9
+ <path d="M0,48.893L0,36.861C5.901,39.084 13.946,40.54 23.143,40.54C35.023,40.54 37.627,38.702 37.627,35.712C37.627,26.057 -1.533,34.947 -1.533,13.64C-1.533,3.141 7.357,-3.142 27.512,-3.142C34.18,-3.142 41,-2.223 46.441,-0.766L48.509,11.036C42.685,9.503 34.868,8.354 25.978,8.354C14.101,8.354 11.494,10.193 11.494,13.181C11.494,22.837 50.656,13.948 50.656,35.252C50.656,45.751 41.767,52.035 21.611,52.035C13.716,52.035 5.746,50.734 0,48.893M-62.23,24.447C-62.23,6.208 -51.96,-3.142 -29.429,-3.142C-23.759,-3.142 -17.168,-2.452 -11.19,-1.532L-9.198,10.27C-14.792,9.195 -22.533,8.354 -29.429,8.354C-43.071,8.354 -48.053,10.653 -49.277,19.083L-10.194,19.083L-10.194,29.812L-49.277,29.812C-48.053,38.242 -43.071,40.541 -29.429,40.541C-22.533,40.541 -14.792,39.698 -9.198,38.624L-11.19,50.426C-17.168,51.345 -23.759,52.035 -29.429,52.035C-51.96,52.035 -62.23,42.687 -62.23,24.447M56.481,24.447C56.481,5.365 66.214,-3.142 88.132,-3.142C110.051,-3.142 119.782,5.365 119.782,24.447C119.782,43.53 110.051,52.035 88.132,52.035C66.214,52.035 56.481,43.53 56.481,24.447M-120.167,-2.377L-95.184,-2.377C-76.331,-2.377 -68.055,4.215 -68.055,19.005C-68.055,33.797 -76.331,40.386 -95.184,40.386L-107.827,40.386L-107.827,51.27L-120.167,51.27L-120.167,-2.377ZM-144.688,-0.844L-132.426,-2.758L-132.426,51.269L-144.688,51.269L-144.688,-0.844ZM219.637,44.756C219.637,40.924 222.319,38.242 226.151,38.242C229.983,38.242 232.664,40.924 232.664,44.756C232.664,48.587 229.983,51.269 226.151,51.269C222.319,51.269 219.637,48.587 219.637,44.756M155.188,-3.142C161.318,-3.142 166.453,-2.682 171.127,-1.532L173.121,10.193C167.987,9.044 162.084,8.354 156.643,8.354C144.153,8.354 140.934,10.883 140.934,19.389L140.934,22.915L171.972,22.915L171.972,34.027L140.934,34.027L140.934,50.964L128.672,50.964L128.672,19.849C128.672,4.829 137.944,-3.142 155.188,-3.142M197.872,9.12L177.717,9.12L177.717,-2.375L230.366,-2.375L230.366,9.12L210.212,9.12L210.212,50.964L197.872,50.964L197.872,9.12ZM226.151,50.121C229.216,50.121 231.439,47.898 231.439,44.756C231.439,41.614 229.216,39.392 226.151,39.392C223.084,39.392 220.862,41.614 220.862,44.756C220.862,47.898 223.084,50.121 226.151,50.121M223.852,41.154L226.456,41.154C228.067,41.154 228.757,41.996 228.757,43.377C228.757,44.372 228.373,45.061 227.606,45.369L229.216,48.127L227.684,48.127L226.226,45.599L225.155,45.599L225.155,48.127L223.852,48.127L223.852,41.154ZM226.304,44.448C227.071,44.448 227.376,44.296 227.376,43.377C227.376,42.456 227.071,42.304 226.304,42.304L225.155,42.304L225.155,44.448L226.304,44.448ZM88.132,40.541C102.694,40.541 106.371,37.321 106.371,24.447C106.371,11.573 102.694,8.354 88.132,8.354C73.571,8.354 69.892,11.573 69.892,24.447C69.892,37.321 73.571,40.541 88.132,40.541M-92.272,28.892C-84.531,28.892 -81.081,26.21 -81.081,19.005C-81.081,12.108 -84.147,9.12 -92.272,9.12L-107.827,9.12L-107.827,28.892L-92.272,28.892Z" style="fill-rule:nonzero;"/>
10
+ </g>
11
+ </g>
12
12
  </svg>
@@ -0,0 +1,7 @@
1
+ import React from "react";
2
+ import type { AliasToken } from "antd/es/theme/interface";
3
+ interface Props {
4
+ children: (token: AliasToken) => React.ReactNode;
5
+ }
6
+ export default function WithToken({ children }: Props): React.JSX.Element;
7
+ export {};
@@ -0,0 +1,7 @@
1
+ import React from "react";
2
+ import { theme } from "antd";
3
+ export default function WithToken({ children }) {
4
+ const { token } = theme.useToken();
5
+ return React.createElement(React.Fragment, null, children(token));
6
+ }
7
+ //# sourceMappingURL=withToken.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"withToken.js","sourceRoot":"","sources":["../../../../coreui/style/withToken.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAC,KAAK,EAAC,MAAM,MAAM,CAAC;AAO3B,MAAM,CAAC,OAAO,UAAU,SAAS,CAAC,EAAC,QAAQ,EAAQ;IAC/C,MAAM,EAAC,KAAK,EAAC,GAAG,KAAK,CAAC,QAAQ,EAAE,CAAC;IACjC,OAAO,0CAAG,QAAQ,CAAC,KAAK,CAAC,CAAI,CAAA;AACjC,CAAC","sourcesContent":["import React from \"react\";\r\nimport {theme} from \"antd\";\r\nimport type {AliasToken} from \"antd/es/theme/interface\";\r\n\r\ninterface Props {\r\n children: (token: AliasToken) => React.ReactNode\r\n}\r\n\r\nexport default function WithToken({children}: Props) {\r\n const {token} = theme.useToken();\r\n return <>{children(token)}</>\r\n}"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "d2aura",
3
- "version": "26.0.4",
3
+ "version": "26.0.6",
4
4
  "description": "D2 AURA - Advanced User Interface Resource Architecture",
5
5
  "author": "Ipesoft s.r.o.",
6
6
  "license": "MIT",
@@ -43,8 +43,8 @@
43
43
  "@types/urijs": "1.19.16",
44
44
  "antd": "5.21.2",
45
45
  "d2core": "23.0.15",
46
- "d2coreui": "23.0.33",
47
- "d2jsapi": "26.0.2",
46
+ "d2coreui": "23.0.34",
47
+ "d2jsapi": "26.0.4",
48
48
  "echarts": "5.5.1",
49
49
  "echarts-for-react": "3.0.2",
50
50
  "file-saver": "2.0.5",