diff --git a/package.json b/package.json index b7c6d90..8e83b94 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "mobx-restful-table", - "version": "1.1.0", + "version": "1.1.1", "license": "LGPL-3.0", "author": "shiy2008@gmail.com", "description": "A Pagination Table & Scroll List component suite for CRUD operation, which is based on MobX RESTful & React.", @@ -29,13 +29,14 @@ "@swc/helpers": "^0.5.1", "classnames": "^2.3.2", "lodash": "^4.17.21", + "mobx-react-helper": "^0.2.0", "react-bootstrap": "^2.8.0", "regenerator-runtime": "^0.14.0", "web-utility": "^4.1.0" }, "peerDependencies": { "mobx": ">=4", - "mobx-i18n": "^0.4.0-rc.0", + "mobx-i18n": "^0.4", "mobx-react": ">=6", "mobx-restful": "^0.6", "react": ">=16.8" @@ -44,19 +45,19 @@ "@parcel/packager-ts": "~2.9.3", "@parcel/transformer-typescript-types": "~2.9.3", "@types/lodash": "^4.14.197", - "@types/react": "^18.2.20", + "@types/react": "^18.2.21", "husky": "^8.0.3", "lint-staged": "^14.0.1", "mobx": "^6.10.0", - "mobx-i18n": "^0.4.0-rc.0", + "mobx-i18n": "^0.4.0", "mobx-react": "^9.0.0", - "mobx-restful": "^0.6.6", + "mobx-restful": "^0.6.10", "parcel": "~2.9.3", "prettier": "^3.0.2", "react": "^18.2.0", - "typedoc": "^0.24.8", - "typedoc-plugin-mdn-links": "^3.0.3", - "typescript": "~5.1.6" + "typedoc": "^0.25.0", + "typedoc-plugin-mdn-links": "^3.1.0", + "typescript": "~5.2.2" }, "prettier": { "singleQuote": true, diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 04f0e5f..d0eeb03 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -14,15 +14,18 @@ dependencies: lodash: specifier: ^4.17.21 version: 4.17.21 + mobx-react-helper: + specifier: ^0.2.0 + version: 0.2.0(mobx@6.10.0)(react@18.2.0) react-bootstrap: specifier: ^2.8.0 - version: 2.8.0(@types/react@18.2.20)(react-dom@18.2.0)(react@18.2.0) + version: 2.8.0(@types/react@18.2.21)(react-dom@18.2.0)(react@18.2.0) regenerator-runtime: specifier: ^0.14.0 version: 0.14.0 web-utility: specifier: ^4.1.0 - version: 4.1.0(typescript@5.1.6) + version: 4.1.0(typescript@5.2.2) devDependencies: '@parcel/packager-ts': @@ -30,13 +33,13 @@ devDependencies: version: 2.9.3(@parcel/core@2.9.3) '@parcel/transformer-typescript-types': specifier: ~2.9.3 - version: 2.9.3(@parcel/core@2.9.3)(typescript@5.1.6) + version: 2.9.3(@parcel/core@2.9.3)(typescript@5.2.2) '@types/lodash': specifier: ^4.14.197 version: 4.14.197 '@types/react': - specifier: ^18.2.20 - version: 18.2.20 + specifier: ^18.2.21 + version: 18.2.21 husky: specifier: ^8.0.3 version: 8.0.3 @@ -47,14 +50,14 @@ devDependencies: specifier: ^6.10.0 version: 6.10.0 mobx-i18n: - specifier: ^0.4.0-rc.0 - version: 0.4.0-rc.0(mobx@6.10.0) + specifier: ^0.4.0 + version: 0.4.0(mobx@6.10.0) mobx-react: specifier: ^9.0.0 version: 9.0.0(mobx@6.10.0)(react-dom@18.2.0)(react@18.2.0) mobx-restful: - specifier: ^0.6.6 - version: 0.6.6(jsdom@22.1.0)(mobx@6.10.0)(typescript@5.1.6) + specifier: ^0.6.10 + version: 0.6.10(jsdom@22.1.0)(mobx@6.10.0)(typescript@5.2.2) parcel: specifier: ~2.9.3 version: 2.9.3(@swc/helpers@0.5.1) @@ -65,14 +68,14 @@ devDependencies: specifier: ^18.2.0 version: 18.2.0 typedoc: - specifier: ^0.24.8 - version: 0.24.8(typescript@5.1.6) + specifier: ^0.25.0 + version: 0.25.0(typescript@5.2.2) typedoc-plugin-mdn-links: - specifier: ^3.0.3 - version: 3.0.3(typedoc@0.24.8) + specifier: ^3.1.0 + version: 3.1.0(typedoc@0.25.0) typescript: - specifier: ~5.1.6 - version: 5.1.6 + specifier: ~5.2.2 + version: 5.2.2 packages: @@ -862,7 +865,7 @@ packages: - '@parcel/core' dev: true - /@parcel/transformer-typescript-types@2.9.3(@parcel/core@2.9.3)(typescript@5.1.6): + /@parcel/transformer-typescript-types@2.9.3(@parcel/core@2.9.3)(typescript@5.2.2): resolution: {integrity: sha512-W+Ze3aUTdZuBQokXlkEQ/1hUApUm6VRyYzPqEs9jcqCqU8mv18i5ZGAz4bMuIJOBprp7M2wt10SJJx/SC1pl1A==} engines: {node: '>= 12.0.0', parcel: ^2.9.3} peerDependencies: @@ -871,22 +874,22 @@ packages: '@parcel/diagnostic': 2.9.3 '@parcel/plugin': 2.9.3(@parcel/core@2.9.3) '@parcel/source-map': 2.1.1 - '@parcel/ts-utils': 2.9.3(typescript@5.1.6) + '@parcel/ts-utils': 2.9.3(typescript@5.2.2) '@parcel/utils': 2.9.3 nullthrows: 1.1.1 - typescript: 5.1.6 + typescript: 5.2.2 transitivePeerDependencies: - '@parcel/core' dev: true - /@parcel/ts-utils@2.9.3(typescript@5.1.6): + /@parcel/ts-utils@2.9.3(typescript@5.2.2): resolution: {integrity: sha512-MiQoXFV8I4IWZT/q5yolKN/gnEY5gZfGB2X7W9WHJbRgyjlT/A5cPERXzVBj6mc3/VM1GdZJz76w637GUcQhow==} engines: {node: '>= 12.0.0'} peerDependencies: typescript: '>=3.0.0' dependencies: nullthrows: 1.1.1 - typescript: 5.1.6 + typescript: 5.2.2 dev: true /@parcel/types@2.9.3(@parcel/core@2.9.3): @@ -1235,11 +1238,11 @@ packages: /@types/react-transition-group@4.4.6: resolution: {integrity: sha512-VnCdSxfcm08KjsJVQcfBmhEQAPnLB8G08hAxn39azX1qYBQ/5RVQuoHuKIcfKOdncuaUvEpFKFzEvbtIMsfVew==} dependencies: - '@types/react': 18.2.20 + '@types/react': 18.2.21 dev: false - /@types/react@18.2.20: - resolution: {integrity: sha512-WKNtmsLWJM/3D5mG4U84cysVY31ivmyw85dE84fOCk5Hx78wezB/XEjVPWl2JTZ5FkEeaTJf+VgUAUn3PE7Isw==} + /@types/react@18.2.21: + resolution: {integrity: sha512-neFKG/sBAwGxHgXiIxnbm3/AAVQ/cMRS93hvBpg8xYRbeQSPVABp9U2bRnPf0iI4+Ucdv3plSxKK+3CW2ENJxA==} dependencies: '@types/prop-types': 15.7.5 '@types/scheduler': 0.16.3 @@ -1936,7 +1939,7 @@ packages: resolution: {integrity: sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w==} dev: true - /koajax@0.8.6(jsdom@22.1.0)(typescript@5.1.6): + /koajax@0.8.6(jsdom@22.1.0)(typescript@5.2.2): resolution: {integrity: sha512-XcI6q8xs/amvbQLtu1uRdgsOvT31WKUzdZ33oZqfWsSIB/k7qwhoTd1ut9U5GzYydDnatOLHRisS71FFp5bxKA==} peerDependencies: jsdom: '>=21' @@ -1945,7 +1948,7 @@ packages: iterable-observer: 1.0.0 jsdom: 22.1.0 regenerator-runtime: 0.13.11 - web-utility: 4.1.0(typescript@5.1.6) + web-utility: 4.1.0(typescript@5.2.2) transitivePeerDependencies: - typescript dev: true @@ -2200,8 +2203,8 @@ packages: brace-expansion: 2.0.1 dev: true - /mobx-i18n@0.4.0-rc.0(mobx@6.10.0): - resolution: {integrity: sha512-mMXKYZEzq1TlAHW5eYVNC+BLqh2jkLIzVxYpHmXCiu7luUkxvNh+UQ5meYtVyBdvsh+nkvxLbKc8o0gbP/HgNg==} + /mobx-i18n@0.4.0(mobx@6.10.0): + resolution: {integrity: sha512-RBC0zWEWkbVlvpmDA7voWSf8Lwk5t7smHwZs/F5frkJdz6ydDibmvcccwHntkY0H+8PFR/1rYpcv6PeR0JuRRw==} peerDependencies: mobx: '>=4' dependencies: @@ -2210,6 +2213,17 @@ packages: regenerator-runtime: 0.14.0 dev: true + /mobx-react-helper@0.2.0(mobx@6.10.0)(react@18.2.0): + resolution: {integrity: sha512-ysc1usU0xulfWh0vRVcQOzdgBy63U5LQ1zNnh3KLlf+JsTEqd/pINLZ6Lys+sZnB+/LJLCYSdc1SD03RMNuCkA==} + peerDependencies: + mobx: '>=4' + react: '>=16' + dependencies: + '@swc/helpers': 0.5.1 + mobx: 6.10.0 + react: 18.2.0 + dev: false + /mobx-react-lite@4.0.3(mobx@6.10.0)(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-wEE1oT5zvDdvplG4HnRrFgPwg5GFVVrEtl42Er85k23zeu3om8H8wbDPgdbQP88zAihVsik6xJfw6VnzUl8fQw==} peerDependencies: @@ -2248,18 +2262,18 @@ packages: react-dom: 18.2.0(react@18.2.0) dev: true - /mobx-restful@0.6.6(jsdom@22.1.0)(mobx@6.10.0)(typescript@5.1.6): - resolution: {integrity: sha512-vZuZfCPLcICY51T6tmgJj6QTOH7a5FEnBSF9nRL1gkuP2Fbz/6AKECEksAuDYAGNGHE6aocNSrG8ZFWbKM7d/g==} + /mobx-restful@0.6.10(jsdom@22.1.0)(mobx@6.10.0)(typescript@5.2.2): + resolution: {integrity: sha512-MZWhkdP5RBTGB0O/Y/D7nIy246Pz0AXDVkdRrKr9+AnpTB4x/g53xwsno5yWR2FasyJygpCtOYPJ59CE+Tb9Pw==} peerDependencies: mobx: '>=4' dependencies: '@swc/helpers': 0.5.1 class-validator: 0.14.0 - koajax: 0.8.6(jsdom@22.1.0)(typescript@5.1.6) + koajax: 0.8.6(jsdom@22.1.0)(typescript@5.2.2) mobx: 6.10.0 reflect-metadata: 0.1.13 regenerator-runtime: 0.14.0 - web-utility: 4.1.0(typescript@5.1.6) + web-utility: 4.1.0(typescript@5.2.2) transitivePeerDependencies: - jsdom - typescript @@ -2267,7 +2281,6 @@ packages: /mobx@6.10.0: resolution: {integrity: sha512-WMbVpCMFtolbB8swQ5E2YRrU+Yu8iLozCVx3CdGjbBKlP7dFiCSuiG06uea3JCFN5DnvtAX7+G5Bp82e2xu0ww==} - dev: true /ms@2.1.2: resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} @@ -2524,7 +2537,7 @@ packages: resolution: {integrity: sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==} dev: true - /react-bootstrap@2.8.0(@types/react@18.2.20)(react-dom@18.2.0)(react@18.2.0): + /react-bootstrap@2.8.0(@types/react@18.2.21)(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-e/aNtxl0Z2ozrIaR82jr6Zz7ss9GSoaXpQaxmvtDUsTZIq/XalkduR/ZXP6vbQHz2T4syvjA+4FbtwELxxmpww==} peerDependencies: '@types/react': '>=16.14.8' @@ -2537,7 +2550,7 @@ packages: '@babel/runtime': 7.22.10 '@restart/hooks': 0.4.11(react@18.2.0) '@restart/ui': 1.6.6(react-dom@18.2.0)(react@18.2.0) - '@types/react': 18.2.20 + '@types/react': 18.2.21 '@types/react-transition-group': 4.4.6 classnames: 2.3.2 dom-helpers: 5.2.1 @@ -2812,30 +2825,30 @@ packages: engines: {node: '>=10'} dev: true - /typedoc-plugin-mdn-links@3.0.3(typedoc@0.24.8): - resolution: {integrity: sha512-NXhIpwQnsg7BcyMCHVqj3tUK+DL4g3Bt96JbFl4APzTGFkA+iM6GfZ/fn3TAqJ8O0CXG5R9BfWxolw1m1omNuQ==} + /typedoc-plugin-mdn-links@3.1.0(typedoc@0.25.0): + resolution: {integrity: sha512-4uwnkvywPFV3UVx7WXpIWTHJdXH1rlE2e4a1WsSwCFYKqJxgTmyapv3ZxJtbSl1dvnb6jmuMNSqKEPz77Gs2OA==} peerDependencies: - typedoc: '>= 0.23.14 || 0.24.x' + typedoc: '>= 0.23.14 || 0.24.x || 0.25.x' dependencies: - typedoc: 0.24.8(typescript@5.1.6) + typedoc: 0.25.0(typescript@5.2.2) dev: true - /typedoc@0.24.8(typescript@5.1.6): - resolution: {integrity: sha512-ahJ6Cpcvxwaxfu4KtjA8qZNqS43wYt6JL27wYiIgl1vd38WW/KWX11YuAeZhuz9v+ttrutSsgK+XO1CjL1kA3w==} - engines: {node: '>= 14.14'} + /typedoc@0.25.0(typescript@5.2.2): + resolution: {integrity: sha512-FvCYWhO1n5jACE0C32qg6b3dSfQ8f2VzExnnRboowHtqUD6ARzM2r8YJeZFYXhcm2hI4C2oCRDgNPk/yaQUN9g==} + engines: {node: '>= 16'} hasBin: true peerDependencies: - typescript: 4.6.x || 4.7.x || 4.8.x || 4.9.x || 5.0.x || 5.1.x + typescript: 4.6.x || 4.7.x || 4.8.x || 4.9.x || 5.0.x || 5.1.x || 5.2.x dependencies: lunr: 2.3.9 marked: 4.3.0 minimatch: 9.0.3 shiki: 0.14.3 - typescript: 5.1.6 + typescript: 5.2.2 dev: true - /typescript@5.1.6: - resolution: {integrity: sha512-zaWCozRZ6DLEWAWFrVDz1H6FVXzUSfTy5FUMWsQlU8Ym5JP9eO4xkTIROFCQvhQf61z6O/G6ugw3SgAnvvm+HA==} + /typescript@5.2.2: + resolution: {integrity: sha512-mI4WrpHsbCIcwT9cF4FZvr80QUeKvsUsUvKDoR+X/7XHQH98xYD8YHZg7ANtz2GtZt/CBq2QJ0thkGJMHfqc1w==} engines: {node: '>=14.17'} hasBin: true @@ -2845,7 +2858,7 @@ packages: react: '>=15.0.0' dependencies: '@babel/runtime': 7.22.10 - '@types/react': 18.2.20 + '@types/react': 18.2.21 invariant: 2.2.4 react: 18.2.0 react-lifecycles-compat: 3.0.4 @@ -2925,7 +2938,7 @@ packages: resolution: {integrity: sha512-DEAoo25RfSYMuTGc9vPJzZcZullwIqRDSI9LOy+fkCJPi6hykCnfKaXTuPBDuXAUcqHXyOgFtHNp/kB2FjYHbw==} dev: true - /web-utility@4.1.0(typescript@5.1.6): + /web-utility@4.1.0(typescript@5.2.2): resolution: {integrity: sha512-3xH9M3F5nXcqXxlRqL24gv0+MewfOw/V1sSTOxXGuxYAxGz+IurDbZ4tsZZV/cZca4bPQEHqXcukfMLccNggkA==} peerDependencies: typescript: '>=4.1.0' @@ -2933,7 +2946,7 @@ packages: '@swc/helpers': 0.4.36 element-internals-polyfill: 1.3.7 regenerator-runtime: 0.13.11 - typescript: 5.1.6 + typescript: 5.2.2 /webidl-conversions@7.0.0: resolution: {integrity: sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==} diff --git a/source/BadgeInput.tsx b/source/BadgeInput.tsx index fd7f83f..b3fe930 100644 --- a/source/BadgeInput.tsx +++ b/source/BadgeInput.tsx @@ -1,5 +1,6 @@ -import { computed, makeObservable, observable } from 'mobx'; +import * as MobX from 'mobx'; import { observer } from 'mobx-react'; +import { observePropsState } from 'mobx-react-helper'; import { InputHTMLAttributes, KeyboardEvent, PureComponent } from 'react'; import { Badge, CloseButton } from 'react-bootstrap'; import { isEmpty } from 'web-utility'; @@ -24,23 +25,25 @@ export interface BadgeInputProps } @observer +@observePropsState export class BadgeInput extends PureComponent { constructor(props: BadgeInputProps) { super(props); - - makeObservable?.(this); + MobX.makeObservable?.(this); } static match(type: string): type is BadgeInputProps['type'] { return TextInputTypes.includes(type as BadgeInputProps['type']); } - @observable + @MobX.observable innerValue = this.props.defaultValue || []; - @computed + declare observedProps: BadgeInputProps; + + @MobX.computed get value() { - return this.props.value || this.innerValue; + return this.observedProps.value || this.innerValue; } handleInput = (event: KeyboardEvent) => { diff --git a/source/FilePicker.tsx b/source/FilePicker.tsx index 5a61301..b8e0b1e 100644 --- a/source/FilePicker.tsx +++ b/source/FilePicker.tsx @@ -1,15 +1,20 @@ import { observer } from 'mobx-react'; +import { + FormComponent, + FormComponentProps, + observePropsState, +} from 'mobx-react-helper'; import { ChangeEvent, MouseEvent } from 'react'; import { CloseButton } from 'react-bootstrap'; import { FilePreview } from './FilePreview'; -import { FormComponent, FormComponentProps } from './FormComponent'; export interface FilePickerProps extends FormComponentProps { onChange?: (value: FormComponentProps['value'], file?: File) => any; } @observer +@observePropsState export class FilePicker extends FormComponent { static readonly displayName = 'FilePicker'; diff --git a/source/FileUploader.tsx b/source/FileUploader.tsx index 8968f00..e35685a 100644 --- a/source/FileUploader.tsx +++ b/source/FileUploader.tsx @@ -1,13 +1,22 @@ -import { makeObservable, observable } from 'mobx'; +import * as MobX from 'mobx'; import { observer } from 'mobx-react'; +import { + FormComponent, + FormComponentProps, + observePropsState, +} from 'mobx-react-helper'; import { BaseModel } from 'mobx-restful'; import { DragEvent } from 'react'; import { FilePicker } from './FilePicker'; -import { FormComponentProps, FormComponent } from './FormComponent'; export abstract class FileModel extends BaseModel { - @observable + constructor() { + super(); + MobX.makeObservable?.(this); + } + + @MobX.observable files: string[] = []; clear() { @@ -64,14 +73,14 @@ export interface FileUploaderProps extends FormComponentProps { } @observer +@observePropsState export class FileUploader extends FormComponent { constructor(props: FileUploaderProps) { super(props); - - makeObservable?.(this); + MobX.makeObservable?.(this); } - @observable + @MobX.observable pickIndex?: number = undefined; componentDidMount() { diff --git a/source/FormComponent.tsx b/source/FormComponent.tsx deleted file mode 100644 index ea6332c..0000000 --- a/source/FormComponent.tsx +++ /dev/null @@ -1,46 +0,0 @@ -import { computed, makeObservable, observable } from 'mobx'; -import { Component, createRef, InputHTMLAttributes } from 'react'; - -export interface FormComponentProps - extends Omit, 'onChange'> { - onChange?: ( - value: InputHTMLAttributes['value'], - ...extra: any[] - ) => any; -} - -export abstract class FormComponent< - P extends FormComponentProps = FormComponentProps, - S = {}, - SS = any, -> extends Component { - constructor(props: P) { - super(props); - - makeObservable?.(this); - } - - ref = createRef(); - - @observable - innerValue = this.props.defaultValue; - - @computed - get value() { - return this.props.value ?? this.innerValue; - } - - reset = () => { - this.innerValue = this.props.defaultValue; - - this.props.onChange?.(this.innerValue); - }; - - componentDidMount() { - this.ref.current?.form?.addEventListener('reset', this.reset); - } - - componentWillUnmount() { - this.ref.current?.form?.removeEventListener('reset', this.reset); - } -} diff --git a/source/ImagePreview.tsx b/source/ImagePreview.tsx index 60c74e3..97ee04b 100644 --- a/source/ImagePreview.tsx +++ b/source/ImagePreview.tsx @@ -1,5 +1,5 @@ import classNames from 'classnames'; -import { makeObservable, observable } from 'mobx'; +import * as MobX from 'mobx'; import { observer } from 'mobx-react'; import { PureComponent } from 'react'; import { Image, ImageProps, Modal, Spinner } from 'react-bootstrap'; @@ -8,17 +8,16 @@ import { Image, ImageProps, Modal, Spinner } from 'react-bootstrap'; export class ImagePreview extends PureComponent { constructor(props: ImageProps) { super(props); - - makeObservable?.(this); + MobX.makeObservable?.(this); } - @observable + @MobX.observable downloading = false; - @observable + @MobX.observable loadedPath = ''; - @observable + @MobX.observable viewing = false; componentDidMount() { diff --git a/source/RestTable.tsx b/source/RestTable.tsx index da74199..ffe8a32 100644 --- a/source/RestTable.tsx +++ b/source/RestTable.tsx @@ -1,22 +1,24 @@ -import { isEmpty } from 'web-utility'; import classNames from 'classnames'; import { debounce } from 'lodash'; -import { computed, makeObservable, observable } from 'mobx'; +import * as MobX from 'mobx'; +import { computed, observable } from 'mobx'; import { TranslationModel } from 'mobx-i18n'; -import { DataObject, IDType } from 'mobx-restful'; import { observer } from 'mobx-react'; -import { PureComponent, ReactNode } from 'react'; +import { observePropsState } from 'mobx-react-helper'; +import { DataObject, IDType } from 'mobx-restful'; +import { Component, ReactNode } from 'react'; import { - Table, - TableProps, - Spinner, Button, Form, Modal, + Spinner, + Table, + TableProps, } from 'react-bootstrap'; +import { isEmpty } from 'web-utility'; -import { Pager } from './Pager'; import { FilePreview } from './FilePreview'; +import { Pager } from './Pager'; import { Field, RestForm, RestFormProps } from './RestForm'; export interface Column @@ -41,17 +43,26 @@ export interface RestTableProps } @observer -export class RestTable extends PureComponent< +@observePropsState +export class RestTable extends Component< RestTableProps > { static displayName = 'RestTable'; constructor(props: RestTableProps) { super(props); + MobX.makeObservable?.(this); + } - makeObservable?.(this); + componentDidMount() { + const { store } = this.props; + + store.clear(); + store.getList(); } + declare observedProps: RestTableProps; + @observable checkedKeys: IDType[] = []; @@ -81,7 +92,7 @@ export class RestTable extends PureComponent< @computed get checkColumn(): Column { const { checkedKeys, toggleCheckAll } = this, - { indexKey, currentPage } = this.props.store; + { indexKey, currentPage } = this.observedProps.store; return { renderHead: () => ( @@ -118,7 +129,7 @@ export class RestTable extends PureComponent< @computed get operateColumn(): Column { - const { editable, deletable, store, translator } = this.props; + const { editable, deletable, store, translator } = this.observedProps; const { t } = translator; return { @@ -152,7 +163,7 @@ export class RestTable extends PureComponent< @computed get columns(): Column[] { - const { editable, deletable, columns, onCheck } = this.props; + const { editable, deletable, columns, onCheck } = this.observedProps; return [ onCheck && this.checkColumn, @@ -196,14 +207,7 @@ export class RestTable extends PureComponent< @computed get editing() { - return !isEmpty(this.props.store.currentOne); - } - - componentDidMount() { - const { store } = this.props; - - store.clear(); - store.getList(); + return !isEmpty(this.observedProps.store.currentOne); } renderTable() { diff --git a/source/index.ts b/source/index.ts index 48f5871..f38f217 100644 --- a/source/index.ts +++ b/source/index.ts @@ -1,4 +1,3 @@ -export * from './FormComponent'; export * from './ImagePreview'; export * from './FilePreview'; export * from './FilePicker';