amis 1.4.0 → 1.4.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/components/Badge.d.ts +2 -1
- package/lib/components/Badge.js +33 -4
- package/lib/components/Badge.js.map +2 -2
- package/lib/components/Button.d.ts +24 -22
- package/lib/components/Button.js +13 -7
- package/lib/components/Button.js.map +2 -2
- package/lib/components/RichText.d.ts +6 -1
- package/lib/components/RichText.js +243 -8
- package/lib/components/RichText.js.map +2 -2
- package/lib/components/calendar/DaysView.js +2 -2
- package/lib/components/calendar/DaysView.js.map +2 -2
- package/lib/components/icons.js +2 -0
- package/lib/components/icons.js.map +2 -2
- package/lib/helper.css.map +1 -1
- package/lib/icons/loading-outline.js +7 -0
- package/lib/index.js +1 -1
- package/lib/renderers/Action.d.ts +9 -1
- package/lib/renderers/Action.js +5 -5
- package/lib/renderers/Action.js.map +2 -2
- package/lib/renderers/DropDownButton.d.ts +4 -0
- package/lib/renderers/DropDownButton.js +5 -3
- package/lib/renderers/DropDownButton.js.map +2 -2
- package/lib/renderers/Nav.d.ts +52 -22
- package/lib/renderers/Nav.js +100 -15
- package/lib/renderers/Nav.js.map +2 -2
- package/lib/renderers/Page.js +1 -1
- package/lib/renderers/Page.js.map +2 -2
- package/lib/themes/ang-ie11.css +350 -54
- package/lib/themes/ang.css +350 -54
- package/lib/themes/ang.css.map +1 -1
- package/lib/themes/antd-ie11.css +350 -54
- package/lib/themes/antd.css +350 -54
- package/lib/themes/antd.css.map +1 -1
- package/lib/themes/cxd-ie11.css +458 -174
- package/lib/themes/cxd.css +458 -174
- package/lib/themes/cxd.css.map +1 -1
- package/lib/themes/dark-ie11.css +350 -54
- package/lib/themes/dark.css +350 -54
- package/lib/themes/dark.css.map +1 -1
- package/lib/themes/default.css +458 -174
- package/lib/themes/default.css.map +1 -1
- package/lib/utils/helper.js.map +2 -2
- package/package.json +1 -2
- package/schema.json +200 -15
- package/scss/_mixins.scss +29 -0
- package/scss/_properties.scss +23 -11
- package/scss/components/_badge.scss +52 -1
- package/scss/components/_button.scss +35 -3
- package/scss/components/_image-gallery.scss +1 -1
- package/scss/components/_nav.scss +109 -35
- package/scss/themes/_cxd-variables.scss +20 -20
- package/sdk/ang-ie11.css +449 -56
- package/sdk/ang.css +459 -56
- package/sdk/antd-ie11.css +439 -48
- package/sdk/antd.css +459 -56
- package/sdk/charts.js +13 -13
- package/sdk/color-picker.js +69 -65
- package/sdk/cropperjs.js +2 -2
- package/sdk/cxd-ie11.css +908 -517
- package/sdk/cxd.css +567 -176
- package/sdk/dark-ie11.css +449 -56
- package/sdk/dark.css +459 -56
- package/sdk/exceljs.js +1 -1
- package/sdk/helper.css.map +1 -1
- package/sdk/markdown.js +69 -69
- package/sdk/papaparse.js +1 -1
- package/sdk/renderers/Form/CityDB.js +1 -1
- package/sdk/rest.js +22 -28
- package/sdk/rich-text.js +62 -64
- package/sdk/sdk-ie11.css +908 -517
- package/sdk/sdk.css +567 -176
- package/sdk/sdk.js +1145 -1141
- package/sdk/thirds/hls.js/hls.js +1 -1
- package/sdk/thirds/mpegts.js/mpegts.js +1 -1
- package/sdk/tinymce.js +57 -57
- package/sdk.zip +0 -0
- package/src/components/Badge.tsx +78 -22
- package/src/components/Button.tsx +23 -7
- package/src/components/RichText.tsx +284 -3
- package/src/components/calendar/DaysView.tsx +2 -2
- package/src/components/icons.tsx +2 -0
- package/src/icons/loading-outline.svg +4 -0
- package/src/renderers/Action.tsx +66 -13
- package/src/renderers/DropDownButton.tsx +13 -4
- package/src/renderers/Nav.tsx +165 -36
- package/src/renderers/Page.tsx +1 -1
- package/src/utils/helper.ts +1 -0
@@ -0,0 +1,7 @@
|
|
1
|
+
"use strict";
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
+
var tslib_1 = require("tslib");
|
4
|
+
var react_1 = (0, tslib_1.__importDefault)(require("react"));
|
5
|
+
var LoadingOutline = function (props) { return react_1.default.createElement("svg", (0, tslib_1.__assign)({ viewBox: "0 0 1024 1024", focusable: "false", "data-icon": "loading", fill: "currentColor", "aria-hidden": "true", className: "icon" }, props),
|
6
|
+
react_1.default.createElement("path", { d: "M988 548c-19.9 0-36-16.1-36-36 0-59.4-11.6-117-34.6-171.3a440.45 440.45 0 00-94.3-139.9 437.71 437.71 0 00-139.9-94.3C629 83.6 571.4 72 512 72c-19.9 0-36-16.1-36-36s16.1-36 36-36c69.1 0 136.2 13.5 199.3 40.3C772.3 66 827 103 874 150c47 47 83.9 101.8 109.7 162.7 26.7 63.1 40.2 130.2 40.2 199.3.1 19.9-16 36-35.9 36z" })); };
|
7
|
+
exports.default = LoadingOutline;
|
package/lib/index.js
CHANGED
@@ -3,7 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.registerLocale = exports.setDefaultLocale = exports.getDefaultLocale = exports.classnames = exports.getClassPrefix = exports.classPrefix = exports.getTheme = exports.theme = exports.setDefaultTheme = exports.validateObject = exports.validate = exports.ScopedContext = exports.Scoped = exports.registerIcon = exports.Icon = exports.setIconVendor = exports.resolveVariableAndFilter = exports.resolveVariable = exports.relativeValueRe = exports.filterDate = exports.filterSchema = exports.resolveRenderer = exports.registerOptionsControl = exports.registerFormItem = exports.getRenderers = exports.unRegisterRenderer = exports.registerRenderer = exports.getRendererByName = exports.normalizeOptions = exports.str2rules = exports.addRule = exports.setCustomEvalExpression = exports.setCustomEvalJs = exports.evalJS = exports.evalExpression = exports.registerTplEnginer = exports.registerFilter = exports.resizeSensor = exports.utils = exports.filter = exports.buildApi = exports.wrapFetcher = exports.OptionsControl = exports.FormItemWrap = exports.FormItem = exports.RegisterStore = exports.Renderer = exports.updateEnv = exports.clearStoresCache = exports.render = void 0;
|
4
4
|
exports.animation = exports.makeTranslator = void 0;
|
5
5
|
var tslib_1 = require("tslib");
|
6
|
-
/** @license amis v1.4.
|
6
|
+
/** @license amis v1.4.1
|
7
7
|
*
|
8
8
|
* Copyright Baidu
|
9
9
|
*
|
@@ -26,6 +26,10 @@ export interface ButtonSchema extends BaseSchema {
|
|
26
26
|
* 右侧 icon 上的 css 类名
|
27
27
|
*/
|
28
28
|
rightIconClassName?: SchemaClassName;
|
29
|
+
/**
|
30
|
+
* loading 上的css 类名
|
31
|
+
*/
|
32
|
+
loadingClassName?: SchemaClassName;
|
29
33
|
/**
|
30
34
|
* 按钮文字
|
31
35
|
*/
|
@@ -96,6 +100,10 @@ export interface ButtonSchema extends BaseSchema {
|
|
96
100
|
* 键盘快捷键
|
97
101
|
*/
|
98
102
|
hotKey?: string;
|
103
|
+
/**
|
104
|
+
* 是否显示loading效果
|
105
|
+
*/
|
106
|
+
loadingOn?: string;
|
99
107
|
}
|
100
108
|
export interface AjaxActionSchema extends ButtonSchema {
|
101
109
|
/**
|
@@ -239,7 +247,7 @@ import { DialogSchemaBase } from './Dialog';
|
|
239
247
|
import { DrawerSchemaBase } from './Drawer';
|
240
248
|
import { BadgeSchema } from '../components/Badge';
|
241
249
|
export declare const createSyntheticEvent: <T extends Element, E extends Event>(event: E) => React.SyntheticEvent<T, E>;
|
242
|
-
export interface ActionProps extends Omit<ButtonSchema, 'className' | 'iconClassName' | 'rightIconClassName'>, ThemeProps, Omit<AjaxActionSchema, 'type' | 'className' | 'iconClassName' | 'rightIconClassName'>, Omit<UrlActionSchema, 'type' | 'className' | 'iconClassName' | 'rightIconClassName'>, Omit<LinkActionSchema, 'type' | 'className' | 'iconClassName' | 'rightIconClassName'>, Omit<DialogActionSchema, 'type' | 'className' | 'iconClassName' | 'rightIconClassName'>, Omit<DrawerActionSchema, 'type' | 'className' | 'iconClassName' | 'rightIconClassName'>, Omit<CopyActionSchema, 'type' | 'className' | 'iconClassName' | 'rightIconClassName'>, Omit<ReloadActionSchema, 'type' | 'className' | 'iconClassName' | 'rightIconClassName'>, Omit<EmailActionSchema, 'type' | 'className' | 'iconClassName' | 'rightIconClassName'>, Omit<OtherActionSchema, 'type' | 'className' | 'iconClassName' | 'rightIconClassName'> {
|
250
|
+
export interface ActionProps extends Omit<ButtonSchema, 'className' | 'iconClassName' | 'rightIconClassName' | 'loadingClassName'>, ThemeProps, Omit<AjaxActionSchema, 'type' | 'className' | 'iconClassName' | 'rightIconClassName' | 'loadingClassName'>, Omit<UrlActionSchema, 'type' | 'className' | 'iconClassName' | 'rightIconClassName' | 'loadingClassName'>, Omit<LinkActionSchema, 'type' | 'className' | 'iconClassName' | 'rightIconClassName' | 'loadingClassName'>, Omit<DialogActionSchema, 'type' | 'className' | 'iconClassName' | 'rightIconClassName' | 'loadingClassName'>, Omit<DrawerActionSchema, 'type' | 'className' | 'iconClassName' | 'rightIconClassName' | 'loadingClassName'>, Omit<CopyActionSchema, 'type' | 'className' | 'iconClassName' | 'rightIconClassName' | 'loadingClassName'>, Omit<ReloadActionSchema, 'type' | 'className' | 'iconClassName' | 'rightIconClassName' | 'loadingClassName'>, Omit<EmailActionSchema, 'type' | 'className' | 'iconClassName' | 'rightIconClassName' | 'loadingClassName'>, Omit<OtherActionSchema, 'type' | 'className' | 'iconClassName' | 'rightIconClassName' | 'loadingClassName'> {
|
243
251
|
actionType: any;
|
244
252
|
onAction?: (e: React.MouseEvent<any> | void | null, action: ActionSchema) => void;
|
245
253
|
isCurrentUrl?: (link: string) => boolean;
|
package/lib/renderers/Action.js
CHANGED
@@ -208,7 +208,7 @@ var Action = /** @class */ (function (_super) {
|
|
208
208
|
};
|
209
209
|
Action.prototype.render = function () {
|
210
210
|
var _a;
|
211
|
-
var _b = this.props, type = _b.type, icon = _b.icon, iconClassName = _b.iconClassName, rightIcon = _b.rightIcon, rightIconClassName = _b.rightIconClassName, primary = _b.primary, size = _b.size, level = _b.level, countDownTpl = _b.countDownTpl, block = _b.block, className = _b.className, componentClass = _b.componentClass, tooltip = _b.tooltip, disabledTip = _b.disabledTip, tooltipPlacement = _b.tooltipPlacement, actionType = _b.actionType, link = _b.link, data = _b.data, __ = _b.translate, activeClassName = _b.activeClassName, isCurrentUrl = _b.isCurrentUrl, isMenuItem = _b.isMenuItem, active = _b.active, activeLevel = _b.activeLevel, tooltipContainer = _b.tooltipContainer, cx = _b.classnames;
|
211
|
+
var _b = this.props, type = _b.type, icon = _b.icon, iconClassName = _b.iconClassName, rightIcon = _b.rightIcon, rightIconClassName = _b.rightIconClassName, loadingClassName = _b.loadingClassName, primary = _b.primary, size = _b.size, level = _b.level, countDownTpl = _b.countDownTpl, block = _b.block, className = _b.className, componentClass = _b.componentClass, tooltip = _b.tooltip, disabledTip = _b.disabledTip, tooltipPlacement = _b.tooltipPlacement, actionType = _b.actionType, link = _b.link, data = _b.data, __ = _b.translate, activeClassName = _b.activeClassName, isCurrentUrl = _b.isCurrentUrl, isMenuItem = _b.isMenuItem, active = _b.active, activeLevel = _b.activeLevel, tooltipTrigger = _b.tooltipTrigger, tooltipContainer = _b.tooltipContainer, tooltipRootClose = _b.tooltipRootClose, loading = _b.loading, cx = _b.classnames;
|
212
212
|
var label = this.props.label;
|
213
213
|
var disabled = this.props.disabled;
|
214
214
|
var isActive = !!active;
|
@@ -226,8 +226,8 @@ var Action = /** @class */ (function (_super) {
|
|
226
226
|
_a[activeClassName || 'is-active'] = isActive,
|
227
227
|
_a)), size: size, level: activeLevel && isActive
|
228
228
|
? activeLevel
|
229
|
-
: level || (primary ? 'primary' : undefined), onClick: this.handleAction, type: type && ~allowedType.indexOf(type) ? type : 'button', disabled: disabled, componentClass: isMenuItem ? 'a' : componentClass, overrideClassName: isMenuItem, tooltip: (0, Remark_1.filterContents)(tooltip, data), disabledTip: (0, Remark_1.filterContents)(disabledTip, data),
|
230
|
-
iconElement,
|
229
|
+
: level || (primary ? 'primary' : undefined), loadingClassName: loadingClassName, loading: loading, onClick: this.handleAction, type: type && ~allowedType.indexOf(type) ? type : 'button', disabled: disabled, componentClass: isMenuItem ? 'a' : componentClass, overrideClassName: isMenuItem, tooltip: (0, Remark_1.filterContents)(tooltip, data), disabledTip: (0, Remark_1.filterContents)(disabledTip, data), tooltipPlacement: tooltipPlacement, tooltipContainer: tooltipContainer, tooltipTrigger: tooltipTrigger, tooltipRootClose: tooltipRootClose, block: block, iconOnly: !!(icon && !label && level !== 'link') },
|
230
|
+
!loading ? iconElement : '',
|
231
231
|
label ? react_1.default.createElement("span", null, (0, tpl_1.filter)(String(label), data)) : null,
|
232
232
|
rightIconElement));
|
233
233
|
};
|
@@ -289,8 +289,8 @@ var ActionRenderer = /** @class */ (function (_super) {
|
|
289
289
|
return env.isCurrentUrl((0, tpl_1.filter)(link, data));
|
290
290
|
};
|
291
291
|
ActionRenderer.prototype.render = function () {
|
292
|
-
var _a = this.props, env = _a.env, disabled = _a.disabled, btnDisabled = _a.btnDisabled, rest = (0, tslib_1.__rest)(_a, ["env", "disabled", "btnDisabled"]);
|
293
|
-
return (react_1.default.createElement(Action, (0, tslib_1.__assign)({}, rest, { disabled: disabled || btnDisabled, onAction: this.handleAction, isCurrentUrl: this.isCurrentAction, tooltipContainer: env.getModalContainer ? env.getModalContainer : undefined })));
|
292
|
+
var _a = this.props, env = _a.env, disabled = _a.disabled, btnDisabled = _a.btnDisabled, loading = _a.loading, rest = (0, tslib_1.__rest)(_a, ["env", "disabled", "btnDisabled", "loading"]);
|
293
|
+
return (react_1.default.createElement(Action, (0, tslib_1.__assign)({}, rest, { disabled: disabled || btnDisabled, onAction: this.handleAction, loading: loading, isCurrentUrl: this.isCurrentAction, tooltipContainer: env.getModalContainer ? env.getModalContainer : undefined })));
|
294
294
|
};
|
295
295
|
var _b;
|
296
296
|
(0, tslib_1.__decorate)([
|
@@ -6,8 +6,8 @@
|
|
6
6
|
"/src/renderers/Action.tsx"
|
7
7
|
],
|
8
8
|
"names": [],
|
9
|
-
"mappings": ";;;;AAAA,6DAA0B;AAC1B,uEAAiC;AACjC,sCAAmD;AACnD,oCAAoC;AACpC,6EAA0C;AAC1C,kEAA+B;
|
9
|
+
"mappings": "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",
|
10
10
|
"sourcesContent": [
|
11
|
-
"import React from 'react';\nimport hotkeys from 'hotkeys-js';\nimport {Renderer, RendererProps} from '../factory';\nimport {filter} from '../utils/tpl';\nimport Button from '../components/Button';\nimport pick from 'lodash/pick';\n\nexport interface ButtonSchema extends BaseSchema {\n /**\n * 是否为块状展示,默认为内联。\n */\n block?: boolean;\n\n /**\n * 禁用时的文案提示。\n */\n disabledTip?: string;\n\n /**\n * 按钮图标, iconfont 的类名\n */\n icon?: SchemaIcon;\n\n /**\n * icon 上的css 类名\n */\n iconClassName?: SchemaClassName;\n\n /**\n * 右侧按钮图标, iconfont 的类名\n */\n rightIcon?: SchemaIcon;\n\n /**\n * 右侧 icon 上的 css 类名\n */\n rightIconClassName?: SchemaClassName;\n\n /**\n * 按钮文字\n */\n label?: string;\n\n /**\n * 按钮样式\n */\n level?:\n | 'info'\n | 'success'\n | 'warning'\n | 'danger'\n | 'link'\n | 'primary'\n | 'dark'\n | 'light';\n\n /**\n * @deprecated 通过 level 来配置\n */\n primary?: boolean;\n\n /**\n * 按钮大小\n */\n size?: 'xs' | 'sm' | 'md' | 'lg';\n\n tooltip?: SchemaTooltip;\n tooltipPlacement?: 'top' | 'right' | 'bottom' | 'left';\n\n /**\n * 指定按钮类型,支持 button、submit或者reset三种类型。\n */\n type: 'button' | 'submit' | 'reset';\n\n /**\n * 提示文字,配置了操作前会要求用户确认。\n */\n confirmText?: string;\n\n /**\n * 如果按钮在form中,配置此属性会要求用户把指定的字段通过验证后才会触发行为。\n */\n required?: Array<string>;\n\n /**\n * 激活状态时的样式\n */\n activeLevel?: string;\n\n /**\n * 激活状态时的类名\n */\n activeClassName?: string;\n\n /**\n * 如果按钮在弹框中,可以配置这个动作完成后是否关闭弹窗,或者指定关闭目标弹框。\n */\n close?: boolean | string;\n\n /**\n * 当按钮时批量操作按钮时,默认必须有勾选元素才能可点击,如果此属性配置成 false,则没有点选成员也能点击。\n */\n requireSelected?: boolean;\n\n /**\n * 是否将弹框中数据 merge 到父级作用域。\n */\n mergeData?: boolean;\n\n /**\n * 可以指定让谁来触发这个动作。\n */\n target?: string;\n\n /**\n * 点击后的禁止倒计时(秒)\n */\n countDown?: number;\n\n /**\n * 倒计时文字自定义\n */\n countDownTpl?: string;\n\n /**\n * 角标\n */\n badge?: BadgeSchema;\n\n /**\n * 键盘快捷键\n */\n hotKey?: string;\n}\n\nexport interface AjaxActionSchema extends ButtonSchema {\n /**\n * 指定为发送 ajax 的行为。\n */\n actionType: 'ajax';\n\n /**\n * 配置 ajax 发送地址\n */\n api: SchemaApi;\n\n feedback?: FeedbackDialog;\n\n reload?: SchemaReload;\n redirect?: string;\n ignoreConfirm?: boolean;\n}\n\nexport interface DownloadActionSchema\n extends Omit<AjaxActionSchema, 'actionType'> {\n /**\n * 指定为下载行为\n */\n actionType: 'download';\n}\n\nexport interface UrlActionSchema extends ButtonSchema {\n /**\n * 指定为打开链接\n */\n actionType: 'url';\n\n /**\n * 是否新窗口打开\n */\n blank?: boolean;\n\n /**\n * 打开的目标地址\n */\n url: string;\n}\n\nexport interface DialogActionSchema extends ButtonSchema {\n /**\n * 指定为打开弹窗\n */\n actionType: 'dialog';\n\n /**\n * 弹框详情\n * 文档:https://baidu.gitee.io/amis/docs/components/dialog\n */\n dialog: DialogSchemaBase;\n\n /**\n * 是否有下一个的表达式,正常可以不用配置,如果想要刷掉某些数据可以配置这个。\n */\n nextCondition?: SchemaExpression;\n reload?: SchemaReload;\n redirect?: string;\n}\n\nexport interface DrawerActionSchema extends ButtonSchema {\n /**\n * 指定为打开弹窗,抽出式弹窗\n */\n actionType: 'drawer';\n\n /**\n * 抽出式弹框详情\n * 文档:https://baidu.gitee.io/amis/docs/components/drawer\n */\n drawer: DrawerSchemaBase;\n\n /**\n * 是否有下一个的表达式,正常可以不用配置,如果想要刷掉某些数据可以配置这个。\n */\n nextCondition?: SchemaExpression;\n reload?: SchemaReload;\n redirect?: string;\n}\n\nexport interface CopyActionSchema extends ButtonSchema {\n /**\n * 指定为复制内容行为\n */\n actionType: 'copy';\n\n /**\n * 复制啥内容由此配置,支持模板语法。\n */\n copy: SchemaTpl;\n}\n\nexport interface LinkActionSchema extends ButtonSchema {\n /**\n * 指定为打开链接行为,跟 url 不同的时这个行为为单页模式。\n */\n actionType: 'link';\n\n /**\n * 跳转到哪?支持配置相对路径。\n */\n link: string;\n}\n\nexport interface ReloadActionSchema extends ButtonSchema {\n /**\n * 指定为刷新目标组件。\n */\n actionType: 'reload';\n\n /**\n * 指定目标组件。\n */\n target?: SchemaReload;\n}\n\nexport interface EmailActionSchema extends ButtonSchema {\n /**\n * 指定为打开邮箱行为\n */\n actionType: 'email';\n\n /**\n * 收件人邮箱\n */\n to: string;\n\n /**\n * 抄送邮箱\n */\n cc?: string;\n\n /**\n * 匿名抄送邮箱\n */\n bcc?: string;\n\n /**\n * 邮件主题\n */\n subject?: string;\n\n /**\n * 邮件正文\n */\n body?: string;\n}\n\nexport interface OtherActionSchema extends ButtonSchema {\n actionType:\n | 'prev'\n | 'next'\n | 'cancel'\n | 'close'\n | 'submit'\n | 'confirm'\n | 'add'\n | 'reset'\n | 'reset-and-submit';\n [propName: string]: any;\n}\n\nexport interface VanillaAction extends ButtonSchema {\n actionType?: string;\n}\n\n/**\n * 按钮动作渲染器。\n * 文档:https://baidu.gitee.io/amis/docs/components/action\n */\nexport type ActionSchema =\n | AjaxActionSchema\n | UrlActionSchema\n | LinkActionSchema\n | DialogActionSchema\n | DrawerActionSchema\n | CopyActionSchema\n | ReloadActionSchema\n | EmailActionSchema\n | OtherActionSchema\n | VanillaAction;\n\nconst ActionProps = [\n 'dialog',\n 'drawer',\n 'url',\n 'link',\n 'confirmText',\n 'tooltip',\n 'disabledTip',\n 'className',\n 'asyncApi',\n 'redirect',\n 'size',\n 'level',\n 'primary',\n 'feedback',\n 'api',\n 'blank',\n 'tooltipPlacement',\n 'to',\n 'cc',\n 'bcc',\n 'subject',\n 'body',\n 'content',\n 'required',\n 'type',\n 'actionType',\n 'label',\n 'icon',\n 'rightIcon',\n 'reload',\n 'target',\n 'close',\n 'messages',\n 'mergeData',\n 'index',\n 'copy',\n 'copyFormat',\n 'payload',\n 'requireSelected'\n];\nimport {filterContents} from './Remark';\nimport {ClassNamesFn, themeable, ThemeProps} from '../theme';\nimport {autobind} from '../utils/helper';\nimport {\n BaseSchema,\n FeedbackDialog,\n SchemaApi,\n SchemaClassName,\n SchemaExpression,\n SchemaIcon,\n SchemaReload,\n SchemaTooltip,\n SchemaTpl\n} from '../Schema';\nimport {DialogSchema, DialogSchemaBase} from './Dialog';\nimport {DrawerSchema, DrawerSchemaBase} from './Drawer';\nimport {generateIcon} from '../utils/icon';\nimport {BadgeSchema, withBadge} from '../components/Badge';\nimport {normalizeApi, str2AsyncFunction} from '../utils/api';\n\n// 构造一个假的 React 事件避免可能的报错,主要用于快捷键功能\n// 来自 https://stackoverflow.com/questions/27062455/reactjs-can-i-create-my-own-syntheticevent\nexport const createSyntheticEvent = <T extends Element, E extends Event>(\n event: E\n): React.SyntheticEvent<T, E> => {\n let isDefaultPrevented = false;\n let isPropagationStopped = false;\n const preventDefault = () => {\n isDefaultPrevented = true;\n event.preventDefault();\n };\n const stopPropagation = () => {\n isPropagationStopped = true;\n event.stopPropagation();\n };\n return {\n nativeEvent: event,\n currentTarget: event.currentTarget as EventTarget & T,\n target: event.target as EventTarget & T,\n bubbles: event.bubbles,\n cancelable: event.cancelable,\n defaultPrevented: event.defaultPrevented,\n eventPhase: event.eventPhase,\n isTrusted: event.isTrusted,\n preventDefault,\n isDefaultPrevented: () => isDefaultPrevented,\n stopPropagation,\n isPropagationStopped: () => isPropagationStopped,\n persist: () => {},\n timeStamp: event.timeStamp,\n type: event.type\n };\n};\n\nexport interface ActionProps\n extends Omit<\n ButtonSchema,\n 'className' | 'iconClassName' | 'rightIconClassName'\n >,\n ThemeProps,\n Omit<\n AjaxActionSchema,\n 'type' | 'className' | 'iconClassName' | 'rightIconClassName'\n >,\n Omit<\n UrlActionSchema,\n 'type' | 'className' | 'iconClassName' | 'rightIconClassName'\n >,\n Omit<\n LinkActionSchema,\n 'type' | 'className' | 'iconClassName' | 'rightIconClassName'\n >,\n Omit<\n DialogActionSchema,\n 'type' | 'className' | 'iconClassName' | 'rightIconClassName'\n >,\n Omit<\n DrawerActionSchema,\n 'type' | 'className' | 'iconClassName' | 'rightIconClassName'\n >,\n Omit<\n CopyActionSchema,\n 'type' | 'className' | 'iconClassName' | 'rightIconClassName'\n >,\n Omit<\n ReloadActionSchema,\n 'type' | 'className' | 'iconClassName' | 'rightIconClassName'\n >,\n Omit<\n EmailActionSchema,\n 'type' | 'className' | 'iconClassName' | 'rightIconClassName'\n >,\n Omit<\n OtherActionSchema,\n 'type' | 'className' | 'iconClassName' | 'rightIconClassName'\n > {\n actionType: any;\n onAction?: (\n e: React.MouseEvent<any> | void | null,\n action: ActionSchema\n ) => void;\n isCurrentUrl?: (link: string) => boolean;\n onClick?:\n | ((e: React.MouseEvent<any>, props: any) => void)\n | string\n | Function\n | null;\n componentClass: React.ReactType;\n tooltipContainer?: any;\n data?: any;\n isMenuItem?: boolean;\n active?: boolean;\n}\n\nconst allowedType = ['button', 'submit', 'reset'];\n\ninterface ActionState {\n inCountDown: boolean; // 是否在倒计时\n countDownEnd: number; // 倒计时结束的精确时间\n timeLeft: number; // 倒计时剩余时间\n}\n\nexport class Action extends React.Component<ActionProps, ActionState> {\n static defaultProps = {\n type: 'button' as 'button',\n componentClass: 'button' as React.ReactType,\n tooltipPlacement: 'bottom' as 'bottom',\n activeClassName: 'is-active',\n countDownTpl: 'Action.countDown',\n countDown: 0\n };\n\n state: ActionState = {\n inCountDown: false,\n countDownEnd: 0,\n timeLeft: 0\n };\n\n localStorageKey: string;\n\n dom: any;\n\n constructor(props: ActionProps) {\n super(props);\n this.localStorageKey = 'amis-countdownend-' + (this.props.name || '');\n const countDownEnd = parseInt(\n localStorage.getItem(this.localStorageKey) || '0'\n );\n if (countDownEnd && this.props.countDown) {\n if (Date.now() < countDownEnd) {\n this.state = {\n inCountDown: true,\n countDownEnd,\n timeLeft: Math.floor((countDownEnd - Date.now()) / 1000)\n };\n this.handleCountDown();\n }\n }\n }\n\n @autobind\n async handleAction(e: React.MouseEvent<any>) {\n const {onAction, disabled, countDown} = this.props;\n // https://reactjs.org/docs/legacy-event-pooling.html\n e.persist();\n let onClick = this.props.onClick;\n\n if (typeof onClick === 'string') {\n onClick = str2AsyncFunction(onClick, 'event', 'props');\n }\n const result: any = onClick && (await onClick(e, this.props));\n\n if (\n disabled ||\n e.isDefaultPrevented() ||\n result === false ||\n !onAction ||\n this.state.inCountDown\n ) {\n return;\n }\n\n e.preventDefault();\n const action = pick(this.props, ActionProps) as ActionSchema;\n\n // download 是一种 ajax 的简写\n if (action.actionType === 'download') {\n action.actionType = 'ajax';\n const api = normalizeApi((action as AjaxActionSchema).api);\n api.responseType = 'blob';\n (action as AjaxActionSchema).api = api;\n }\n\n onAction(e, action);\n\n if (countDown) {\n const countDownEnd = Date.now() + countDown * 1000;\n this.setState({\n countDownEnd: countDownEnd,\n inCountDown: true,\n timeLeft: countDown\n });\n\n localStorage.setItem(this.localStorageKey, String(countDownEnd));\n\n setTimeout(() => {\n this.handleCountDown();\n }, 1000);\n }\n }\n\n @autobind\n handleCountDown() {\n // setTimeout 一般会晚于 1s,经过几十次后就不准了,所以使用真实时间进行 diff\n const timeLeft = Math.floor((this.state.countDownEnd - Date.now()) / 1000);\n if (timeLeft <= 0) {\n this.setState({\n inCountDown: false,\n timeLeft: timeLeft\n });\n } else {\n this.setState({\n timeLeft: timeLeft\n });\n setTimeout(() => {\n this.handleCountDown();\n }, 1000);\n }\n }\n\n @autobind\n componentDidMount() {\n const {hotKey} = this.props;\n if (hotKey) {\n hotkeys(hotKey, event => {\n event.preventDefault();\n const click = new MouseEvent('click', {\n bubbles: true,\n cancelable: true\n });\n this.handleAction(createSyntheticEvent(click) as any);\n });\n }\n }\n\n @autobind\n componentWillUnmount() {\n const {hotKey} = this.props;\n if (hotKey) {\n hotkeys.unbind(hotKey);\n }\n }\n\n render() {\n const {\n type,\n icon,\n iconClassName,\n rightIcon,\n rightIconClassName,\n primary,\n size,\n level,\n countDownTpl,\n block,\n className,\n componentClass,\n tooltip,\n disabledTip,\n tooltipPlacement,\n actionType,\n link,\n data,\n translate: __,\n activeClassName,\n isCurrentUrl,\n isMenuItem,\n active,\n activeLevel,\n tooltipContainer,\n classnames: cx\n } = this.props;\n\n let label = this.props.label;\n let disabled = this.props.disabled;\n let isActive = !!active;\n\n if (actionType === 'link' && !isActive && link && isCurrentUrl) {\n isActive = isCurrentUrl(link);\n }\n\n // 倒计时\n if (this.state.inCountDown) {\n label = filterContents(__(countDownTpl), {\n ...data,\n timeLeft: this.state.timeLeft\n }) as string;\n disabled = true;\n }\n\n const iconElement = generateIcon(cx, icon, 'Button-icon', iconClassName);\n const rightIconElement = generateIcon(\n cx,\n rightIcon,\n 'Button-icon',\n rightIconClassName\n );\n\n return (\n <Button\n className={cx(className, {\n [activeClassName || 'is-active']: isActive\n })}\n size={size}\n level={\n activeLevel && isActive\n ? activeLevel\n : level || (primary ? 'primary' : undefined)\n }\n onClick={this.handleAction}\n type={type && ~allowedType.indexOf(type) ? type : 'button'}\n disabled={disabled}\n componentClass={isMenuItem ? 'a' : componentClass}\n overrideClassName={isMenuItem}\n tooltip={filterContents(tooltip, data)}\n disabledTip={filterContents(disabledTip, data)}\n placement={tooltipPlacement}\n tooltipContainer={tooltipContainer}\n block={block}\n iconOnly={!!(icon && !label && level !== 'link')}\n >\n {iconElement}\n {label ? <span>{filter(String(label), data)}</span> : null}\n {rightIconElement}\n </Button>\n );\n }\n}\n\nexport default themeable(Action);\n\n@Renderer({\n type: 'action'\n})\n// @ts-ignore 类型没搞定\n@withBadge\nexport class ActionRenderer extends React.Component<\n RendererProps &\n Omit<ActionProps, 'onAction' | 'isCurrentUrl' | 'tooltipContainer'> & {\n onAction: (\n e: React.MouseEvent<any> | void | null,\n action: object,\n data: any\n ) => void;\n btnDisabled?: boolean;\n }\n> {\n @autobind\n handleAction(e: React.MouseEvent<any> | void | null, action: any) {\n const {env, onAction, data, ignoreConfirm} = this.props;\n\n if (!ignoreConfirm && action.confirmText && env.confirm) {\n env\n .confirm(filter(action.confirmText, data))\n .then((confirmed: boolean) => confirmed && onAction(e, action, data));\n } else {\n onAction(e, action, data);\n }\n }\n\n @autobind\n isCurrentAction(link: string) {\n const {env, data} = this.props;\n return env.isCurrentUrl(filter(link, data));\n }\n\n render() {\n const {env, disabled, btnDisabled, ...rest} = this.props;\n\n return (\n <Action\n {...(rest as any)}\n disabled={disabled || btnDisabled}\n onAction={this.handleAction}\n isCurrentUrl={this.isCurrentAction}\n tooltipContainer={\n env.getModalContainer ? env.getModalContainer : undefined\n }\n />\n );\n }\n}\n\n@Renderer({\n type: 'button'\n})\nexport class ButtonRenderer extends ActionRenderer {}\n\n@Renderer({\n type: 'submit'\n})\nexport class SubmitRenderer extends ActionRenderer {}\n\n@Renderer({\n type: 'reset'\n})\nexport class ResetRenderer extends ActionRenderer {}\n"
|
11
|
+
"import React from 'react';\nimport hotkeys from 'hotkeys-js';\nimport {Renderer, RendererProps} from '../factory';\nimport {filter} from '../utils/tpl';\nimport Button from '../components/Button';\nimport pick from 'lodash/pick';\n\nexport interface ButtonSchema extends BaseSchema {\n /**\n * 是否为块状展示,默认为内联。\n */\n block?: boolean;\n\n /**\n * 禁用时的文案提示。\n */\n disabledTip?: string;\n\n /**\n * 按钮图标, iconfont 的类名\n */\n icon?: SchemaIcon;\n\n /**\n * icon 上的css 类名\n */\n iconClassName?: SchemaClassName;\n\n /**\n * 右侧按钮图标, iconfont 的类名\n */\n rightIcon?: SchemaIcon;\n\n /**\n * 右侧 icon 上的 css 类名\n */\n rightIconClassName?: SchemaClassName;\n /**\n * loading 上的css 类名\n */\n loadingClassName?: SchemaClassName;\n\n /**\n * 按钮文字\n */\n label?: string;\n\n /**\n * 按钮样式\n */\n level?:\n | 'info'\n | 'success'\n | 'warning'\n | 'danger'\n | 'link'\n | 'primary'\n | 'dark'\n | 'light';\n\n /**\n * @deprecated 通过 level 来配置\n */\n primary?: boolean;\n\n /**\n * 按钮大小\n */\n size?: 'xs' | 'sm' | 'md' | 'lg';\n\n tooltip?: SchemaTooltip;\n tooltipPlacement?: 'top' | 'right' | 'bottom' | 'left';\n\n /**\n * 指定按钮类型,支持 button、submit或者reset三种类型。\n */\n type: 'button' | 'submit' | 'reset';\n\n /**\n * 提示文字,配置了操作前会要求用户确认。\n */\n confirmText?: string;\n\n /**\n * 如果按钮在form中,配置此属性会要求用户把指定的字段通过验证后才会触发行为。\n */\n required?: Array<string>;\n\n /**\n * 激活状态时的样式\n */\n activeLevel?: string;\n\n /**\n * 激活状态时的类名\n */\n activeClassName?: string;\n\n /**\n * 如果按钮在弹框中,可以配置这个动作完成后是否关闭弹窗,或者指定关闭目标弹框。\n */\n close?: boolean | string;\n\n /**\n * 当按钮时批量操作按钮时,默认必须有勾选元素才能可点击,如果此属性配置成 false,则没有点选成员也能点击。\n */\n requireSelected?: boolean;\n\n /**\n * 是否将弹框中数据 merge 到父级作用域。\n */\n mergeData?: boolean;\n\n /**\n * 可以指定让谁来触发这个动作。\n */\n target?: string;\n\n /**\n * 点击后的禁止倒计时(秒)\n */\n countDown?: number;\n\n /**\n * 倒计时文字自定义\n */\n countDownTpl?: string;\n\n /**\n * 角标\n */\n badge?: BadgeSchema;\n\n /**\n * 键盘快捷键\n */\n hotKey?: string;\n /**\n * 是否显示loading效果\n */\n loadingOn?: string;\n}\n\nexport interface AjaxActionSchema extends ButtonSchema {\n /**\n * 指定为发送 ajax 的行为。\n */\n actionType: 'ajax';\n\n /**\n * 配置 ajax 发送地址\n */\n api: SchemaApi;\n\n feedback?: FeedbackDialog;\n\n reload?: SchemaReload;\n redirect?: string;\n ignoreConfirm?: boolean;\n}\n\nexport interface DownloadActionSchema\n extends Omit<AjaxActionSchema, 'actionType'> {\n /**\n * 指定为下载行为\n */\n actionType: 'download';\n}\n\nexport interface UrlActionSchema extends ButtonSchema {\n /**\n * 指定为打开链接\n */\n actionType: 'url';\n\n /**\n * 是否新窗口打开\n */\n blank?: boolean;\n\n /**\n * 打开的目标地址\n */\n url: string;\n}\n\nexport interface DialogActionSchema extends ButtonSchema {\n /**\n * 指定为打开弹窗\n */\n actionType: 'dialog';\n\n /**\n * 弹框详情\n * 文档:https://baidu.gitee.io/amis/docs/components/dialog\n */\n dialog: DialogSchemaBase;\n\n /**\n * 是否有下一个的表达式,正常可以不用配置,如果想要刷掉某些数据可以配置这个。\n */\n nextCondition?: SchemaExpression;\n reload?: SchemaReload;\n redirect?: string;\n}\n\nexport interface DrawerActionSchema extends ButtonSchema {\n /**\n * 指定为打开弹窗,抽出式弹窗\n */\n actionType: 'drawer';\n\n /**\n * 抽出式弹框详情\n * 文档:https://baidu.gitee.io/amis/docs/components/drawer\n */\n drawer: DrawerSchemaBase;\n\n /**\n * 是否有下一个的表达式,正常可以不用配置,如果想要刷掉某些数据可以配置这个。\n */\n nextCondition?: SchemaExpression;\n reload?: SchemaReload;\n redirect?: string;\n}\n\nexport interface CopyActionSchema extends ButtonSchema {\n /**\n * 指定为复制内容行为\n */\n actionType: 'copy';\n\n /**\n * 复制啥内容由此配置,支持模板语法。\n */\n copy: SchemaTpl;\n}\n\nexport interface LinkActionSchema extends ButtonSchema {\n /**\n * 指定为打开链接行为,跟 url 不同的时这个行为为单页模式。\n */\n actionType: 'link';\n\n /**\n * 跳转到哪?支持配置相对路径。\n */\n link: string;\n}\n\nexport interface ReloadActionSchema extends ButtonSchema {\n /**\n * 指定为刷新目标组件。\n */\n actionType: 'reload';\n\n /**\n * 指定目标组件。\n */\n target?: SchemaReload;\n}\n\nexport interface EmailActionSchema extends ButtonSchema {\n /**\n * 指定为打开邮箱行为\n */\n actionType: 'email';\n\n /**\n * 收件人邮箱\n */\n to: string;\n\n /**\n * 抄送邮箱\n */\n cc?: string;\n\n /**\n * 匿名抄送邮箱\n */\n bcc?: string;\n\n /**\n * 邮件主题\n */\n subject?: string;\n\n /**\n * 邮件正文\n */\n body?: string;\n}\n\nexport interface OtherActionSchema extends ButtonSchema {\n actionType:\n | 'prev'\n | 'next'\n | 'cancel'\n | 'close'\n | 'submit'\n | 'confirm'\n | 'add'\n | 'reset'\n | 'reset-and-submit';\n [propName: string]: any;\n}\n\nexport interface VanillaAction extends ButtonSchema {\n actionType?: string;\n}\n\n/**\n * 按钮动作渲染器。\n * 文档:https://baidu.gitee.io/amis/docs/components/action\n */\nexport type ActionSchema =\n | AjaxActionSchema\n | UrlActionSchema\n | LinkActionSchema\n | DialogActionSchema\n | DrawerActionSchema\n | CopyActionSchema\n | ReloadActionSchema\n | EmailActionSchema\n | OtherActionSchema\n | VanillaAction;\n\nconst ActionProps = [\n 'dialog',\n 'drawer',\n 'url',\n 'link',\n 'confirmText',\n 'tooltip',\n 'disabledTip',\n 'className',\n 'asyncApi',\n 'redirect',\n 'size',\n 'level',\n 'primary',\n 'feedback',\n 'api',\n 'blank',\n 'tooltipPlacement',\n 'to',\n 'cc',\n 'bcc',\n 'subject',\n 'body',\n 'content',\n 'required',\n 'type',\n 'actionType',\n 'label',\n 'icon',\n 'rightIcon',\n 'reload',\n 'target',\n 'close',\n 'messages',\n 'mergeData',\n 'index',\n 'copy',\n 'copyFormat',\n 'payload',\n 'requireSelected'\n];\nimport {filterContents} from './Remark';\nimport {ClassNamesFn, themeable, ThemeProps} from '../theme';\nimport {autobind} from '../utils/helper';\nimport {\n BaseSchema,\n FeedbackDialog,\n SchemaApi,\n SchemaClassName,\n SchemaExpression,\n SchemaIcon,\n SchemaReload,\n SchemaTooltip,\n SchemaTpl\n} from '../Schema';\nimport {DialogSchema, DialogSchemaBase} from './Dialog';\nimport {DrawerSchema, DrawerSchemaBase} from './Drawer';\nimport {generateIcon} from '../utils/icon';\nimport {BadgeSchema, withBadge} from '../components/Badge';\nimport {normalizeApi, str2AsyncFunction} from '../utils/api';\n\n// 构造一个假的 React 事件避免可能的报错,主要用于快捷键功能\n// 来自 https://stackoverflow.com/questions/27062455/reactjs-can-i-create-my-own-syntheticevent\nexport const createSyntheticEvent = <T extends Element, E extends Event>(\n event: E\n): React.SyntheticEvent<T, E> => {\n let isDefaultPrevented = false;\n let isPropagationStopped = false;\n const preventDefault = () => {\n isDefaultPrevented = true;\n event.preventDefault();\n };\n const stopPropagation = () => {\n isPropagationStopped = true;\n event.stopPropagation();\n };\n return {\n nativeEvent: event,\n currentTarget: event.currentTarget as EventTarget & T,\n target: event.target as EventTarget & T,\n bubbles: event.bubbles,\n cancelable: event.cancelable,\n defaultPrevented: event.defaultPrevented,\n eventPhase: event.eventPhase,\n isTrusted: event.isTrusted,\n preventDefault,\n isDefaultPrevented: () => isDefaultPrevented,\n stopPropagation,\n isPropagationStopped: () => isPropagationStopped,\n persist: () => {},\n timeStamp: event.timeStamp,\n type: event.type\n };\n};\n\nexport interface ActionProps\n extends Omit<\n ButtonSchema,\n 'className' | 'iconClassName' | 'rightIconClassName' | 'loadingClassName'\n >,\n ThemeProps,\n Omit<\n AjaxActionSchema,\n | 'type'\n | 'className'\n | 'iconClassName'\n | 'rightIconClassName'\n | 'loadingClassName'\n >,\n Omit<\n UrlActionSchema,\n | 'type'\n | 'className'\n | 'iconClassName'\n | 'rightIconClassName'\n | 'loadingClassName'\n >,\n Omit<\n LinkActionSchema,\n | 'type'\n | 'className'\n | 'iconClassName'\n | 'rightIconClassName'\n | 'loadingClassName'\n >,\n Omit<\n DialogActionSchema,\n | 'type'\n | 'className'\n | 'iconClassName'\n | 'rightIconClassName'\n | 'loadingClassName'\n >,\n Omit<\n DrawerActionSchema,\n | 'type'\n | 'className'\n | 'iconClassName'\n | 'rightIconClassName'\n | 'loadingClassName'\n >,\n Omit<\n CopyActionSchema,\n | 'type'\n | 'className'\n | 'iconClassName'\n | 'rightIconClassName'\n | 'loadingClassName'\n >,\n Omit<\n ReloadActionSchema,\n | 'type'\n | 'className'\n | 'iconClassName'\n | 'rightIconClassName'\n | 'loadingClassName'\n >,\n Omit<\n EmailActionSchema,\n | 'type'\n | 'className'\n | 'iconClassName'\n | 'rightIconClassName'\n | 'loadingClassName'\n >,\n Omit<\n OtherActionSchema,\n | 'type'\n | 'className'\n | 'iconClassName'\n | 'rightIconClassName'\n | 'loadingClassName'\n > {\n actionType: any;\n onAction?: (\n e: React.MouseEvent<any> | void | null,\n action: ActionSchema\n ) => void;\n isCurrentUrl?: (link: string) => boolean;\n onClick?:\n | ((e: React.MouseEvent<any>, props: any) => void)\n | string\n | Function\n | null;\n componentClass: React.ReactType;\n tooltipContainer?: any;\n data?: any;\n isMenuItem?: boolean;\n active?: boolean;\n}\n\nconst allowedType = ['button', 'submit', 'reset'];\n\ninterface ActionState {\n inCountDown: boolean; // 是否在倒计时\n countDownEnd: number; // 倒计时结束的精确时间\n timeLeft: number; // 倒计时剩余时间\n}\n\nexport class Action extends React.Component<ActionProps, ActionState> {\n static defaultProps = {\n type: 'button' as 'button',\n componentClass: 'button' as React.ReactType,\n tooltipPlacement: 'bottom' as 'bottom',\n activeClassName: 'is-active',\n countDownTpl: 'Action.countDown',\n countDown: 0\n };\n\n state: ActionState = {\n inCountDown: false,\n countDownEnd: 0,\n timeLeft: 0\n };\n\n localStorageKey: string;\n\n dom: any;\n\n constructor(props: ActionProps) {\n super(props);\n this.localStorageKey = 'amis-countdownend-' + (this.props.name || '');\n const countDownEnd = parseInt(\n localStorage.getItem(this.localStorageKey) || '0'\n );\n if (countDownEnd && this.props.countDown) {\n if (Date.now() < countDownEnd) {\n this.state = {\n inCountDown: true,\n countDownEnd,\n timeLeft: Math.floor((countDownEnd - Date.now()) / 1000)\n };\n this.handleCountDown();\n }\n }\n }\n\n @autobind\n async handleAction(e: React.MouseEvent<any>) {\n const {onAction, disabled, countDown} = this.props;\n // https://reactjs.org/docs/legacy-event-pooling.html\n e.persist();\n let onClick = this.props.onClick;\n\n if (typeof onClick === 'string') {\n onClick = str2AsyncFunction(onClick, 'event', 'props');\n }\n const result: any = onClick && (await onClick(e, this.props));\n\n if (\n disabled ||\n e.isDefaultPrevented() ||\n result === false ||\n !onAction ||\n this.state.inCountDown\n ) {\n return;\n }\n\n e.preventDefault();\n const action = pick(this.props, ActionProps) as ActionSchema;\n\n // download 是一种 ajax 的简写\n if (action.actionType === 'download') {\n action.actionType = 'ajax';\n const api = normalizeApi((action as AjaxActionSchema).api);\n api.responseType = 'blob';\n (action as AjaxActionSchema).api = api;\n }\n\n onAction(e, action);\n\n if (countDown) {\n const countDownEnd = Date.now() + countDown * 1000;\n this.setState({\n countDownEnd: countDownEnd,\n inCountDown: true,\n timeLeft: countDown\n });\n\n localStorage.setItem(this.localStorageKey, String(countDownEnd));\n\n setTimeout(() => {\n this.handleCountDown();\n }, 1000);\n }\n }\n\n @autobind\n handleCountDown() {\n // setTimeout 一般会晚于 1s,经过几十次后就不准了,所以使用真实时间进行 diff\n const timeLeft = Math.floor((this.state.countDownEnd - Date.now()) / 1000);\n if (timeLeft <= 0) {\n this.setState({\n inCountDown: false,\n timeLeft: timeLeft\n });\n } else {\n this.setState({\n timeLeft: timeLeft\n });\n setTimeout(() => {\n this.handleCountDown();\n }, 1000);\n }\n }\n\n @autobind\n componentDidMount() {\n const {hotKey} = this.props;\n if (hotKey) {\n hotkeys(hotKey, event => {\n event.preventDefault();\n const click = new MouseEvent('click', {\n bubbles: true,\n cancelable: true\n });\n this.handleAction(createSyntheticEvent(click) as any);\n });\n }\n }\n\n @autobind\n componentWillUnmount() {\n const {hotKey} = this.props;\n if (hotKey) {\n hotkeys.unbind(hotKey);\n }\n }\n\n render() {\n const {\n type,\n icon,\n iconClassName,\n rightIcon,\n rightIconClassName,\n loadingClassName,\n primary,\n size,\n level,\n countDownTpl,\n block,\n className,\n componentClass,\n tooltip,\n disabledTip,\n tooltipPlacement,\n actionType,\n link,\n data,\n translate: __,\n activeClassName,\n isCurrentUrl,\n isMenuItem,\n active,\n activeLevel,\n tooltipTrigger,\n tooltipContainer,\n tooltipRootClose,\n loading,\n classnames: cx\n } = this.props;\n\n let label = this.props.label;\n let disabled = this.props.disabled;\n let isActive = !!active;\n\n if (actionType === 'link' && !isActive && link && isCurrentUrl) {\n isActive = isCurrentUrl(link);\n }\n\n // 倒计时\n if (this.state.inCountDown) {\n label = filterContents(__(countDownTpl), {\n ...data,\n timeLeft: this.state.timeLeft\n }) as string;\n disabled = true;\n }\n\n const iconElement = generateIcon(cx, icon, 'Button-icon', iconClassName);\n const rightIconElement = generateIcon(\n cx,\n rightIcon,\n 'Button-icon',\n rightIconClassName\n );\n\n return (\n <Button\n className={cx(className, {\n [activeClassName || 'is-active']: isActive\n })}\n size={size}\n level={\n activeLevel && isActive\n ? activeLevel\n : level || (primary ? 'primary' : undefined)\n }\n loadingClassName={loadingClassName}\n loading={loading}\n onClick={this.handleAction}\n type={type && ~allowedType.indexOf(type) ? type : 'button'}\n disabled={disabled}\n componentClass={isMenuItem ? 'a' : componentClass}\n overrideClassName={isMenuItem}\n tooltip={filterContents(tooltip, data)}\n disabledTip={filterContents(disabledTip, data)}\n tooltipPlacement={tooltipPlacement}\n tooltipContainer={tooltipContainer}\n tooltipTrigger={tooltipTrigger}\n tooltipRootClose={tooltipRootClose}\n block={block}\n iconOnly={!!(icon && !label && level !== 'link')}\n >\n {!loading ? iconElement : ''}\n {label ? <span>{filter(String(label), data)}</span> : null}\n {rightIconElement}\n </Button>\n );\n }\n}\n\nexport default themeable(Action);\n\n@Renderer({\n type: 'action'\n})\n// @ts-ignore 类型没搞定\n@withBadge\nexport class ActionRenderer extends React.Component<\n RendererProps &\n Omit<ActionProps, 'onAction' | 'isCurrentUrl' | 'tooltipContainer'> & {\n onAction: (\n e: React.MouseEvent<any> | void | null,\n action: object,\n data: any\n ) => void;\n btnDisabled?: boolean;\n }\n> {\n @autobind\n handleAction(e: React.MouseEvent<any> | void | null, action: any) {\n const {env, onAction, data, ignoreConfirm} = this.props;\n\n if (!ignoreConfirm && action.confirmText && env.confirm) {\n env\n .confirm(filter(action.confirmText, data))\n .then((confirmed: boolean) => confirmed && onAction(e, action, data));\n } else {\n onAction(e, action, data);\n }\n }\n\n @autobind\n isCurrentAction(link: string) {\n const {env, data} = this.props;\n return env.isCurrentUrl(filter(link, data));\n }\n\n render() {\n const {env, disabled, btnDisabled, loading, ...rest} = this.props;\n\n return (\n <Action\n {...(rest as any)}\n disabled={disabled || btnDisabled}\n onAction={this.handleAction}\n loading={loading}\n isCurrentUrl={this.isCurrentAction}\n tooltipContainer={\n env.getModalContainer ? env.getModalContainer : undefined\n }\n />\n );\n }\n}\n\n@Renderer({\n type: 'button'\n})\nexport class ButtonRenderer extends ActionRenderer {}\n\n@Renderer({\n type: 'submit'\n})\nexport class SubmitRenderer extends ActionRenderer {}\n\n@Renderer({\n type: 'reset'\n})\nexport class ResetRenderer extends ActionRenderer {}\n"
|
12
12
|
]
|
13
13
|
}
|
@@ -60,6 +60,10 @@ export interface DropdownButtonSchema extends BaseSchema {
|
|
60
60
|
* 触发条件,默认是 click
|
61
61
|
*/
|
62
62
|
trigger?: 'click' | 'hover';
|
63
|
+
/**
|
64
|
+
* 是否显示下拉按钮
|
65
|
+
*/
|
66
|
+
hideCaret?: boolean;
|
63
67
|
}
|
64
68
|
export interface DropDownButtonProps extends RendererProps, Omit<DropdownButtonSchema, 'type' | 'className'> {
|
65
69
|
disabledTip?: string | TooltipObject;
|
@@ -78,7 +78,7 @@ var DropDownButton = /** @class */ (function (_super) {
|
|
78
78
|
return body;
|
79
79
|
};
|
80
80
|
DropDownButton.prototype.render = function () {
|
81
|
-
var _a = this.props, tooltip = _a.tooltip, placement = _a.placement, tooltipContainer = _a.tooltipContainer, tooltipTrigger = _a.tooltipTrigger, tooltipRootClose = _a.tooltipRootClose, disabledTip = _a.disabledTip, block = _a.block, disabled = _a.disabled, btnDisabled = _a.btnDisabled, btnClassName = _a.btnClassName, size = _a.size, label = _a.label, level = _a.level, primary = _a.primary, className = _a.className, cx = _a.classnames, align = _a.align, iconOnly = _a.iconOnly, icon = _a.icon, isActived = _a.isActived, trigger = _a.trigger, data = _a.data;
|
81
|
+
var _a = this.props, tooltip = _a.tooltip, placement = _a.placement, tooltipContainer = _a.tooltipContainer, tooltipTrigger = _a.tooltipTrigger, tooltipRootClose = _a.tooltipRootClose, disabledTip = _a.disabledTip, block = _a.block, disabled = _a.disabled, btnDisabled = _a.btnDisabled, btnClassName = _a.btnClassName, size = _a.size, label = _a.label, level = _a.level, primary = _a.primary, className = _a.className, cx = _a.classnames, align = _a.align, iconOnly = _a.iconOnly, icon = _a.icon, isActived = _a.isActived, trigger = _a.trigger, data = _a.data, hideCaret = _a.hideCaret;
|
82
82
|
return (react_1.default.createElement("div", { className: cx('DropDown ', {
|
83
83
|
'DropDown--block': block,
|
84
84
|
'DropDown--alignRight': align === 'right',
|
@@ -97,8 +97,10 @@ var DropDownButton = /** @class */ (function (_super) {
|
|
97
97
|
}, size ? "Button--" + size : '') },
|
98
98
|
icon ? (typeof icon === 'string' ? (react_1.default.createElement("i", { className: cx(icon, 'm-r-xs') })) : (icon)) : null,
|
99
99
|
typeof label === 'string' ? (0, tpl_1.filter)(label, data) : label,
|
100
|
-
|
101
|
-
react_1.default.createElement(
|
100
|
+
!hideCaret
|
101
|
+
? react_1.default.createElement("span", { className: cx('DropDown-caret') },
|
102
|
+
react_1.default.createElement(icons_1.Icon, { icon: "caret", className: "icon" }))
|
103
|
+
: null)),
|
102
104
|
this.state.isOpened ? this.renderOuter() : null));
|
103
105
|
};
|
104
106
|
DropDownButton.defaultProps = {
|
@@ -6,8 +6,8 @@
|
|
6
6
|
"/src/renderers/DropDownButton.tsx"
|
7
7
|
],
|
8
8
|
"names": [],
|
9
|
-
"mappings": ";;;;AAAA,6DAA0B;AAC1B,sCAAmD;AACnD,+EAA4C;AAC5C,+EAA4C;AAC5C,6FAA0D;AAE1D,0CAA4D;AAC5D,oCAAoC;AACpC,6CAAyC;AAIzC,gDAA6C;
|
9
|
+
"mappings": "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",
|
10
10
|
"sourcesContent": [
|
11
|
-
"import React from 'react';\nimport {Renderer, RendererProps} from '../factory';\nimport Overlay from '../components/Overlay';\nimport PopOver from '../components/PopOver';\nimport TooltipWrapper from '../components/TooltipWrapper';\nimport type {TooltipObject, Trigger} from '../components/TooltipWrapper';\nimport {isDisabled, isVisible, noop} from '../utils/helper';\nimport {filter} from '../utils/tpl';\nimport {Icon} from '../components/icons';\nimport {BaseSchema, SchemaClassName} from '../Schema';\nimport {ActionSchema} from './Action';\nimport {DividerSchema} from './Divider';\nimport {RootClose} from '../utils/RootClose';\n\n/**\n * 下拉按钮渲染器。\n * 文档:https://baidu.gitee.io/amis/docs/components/dropdown-button\n */\nexport interface DropdownButtonSchema extends BaseSchema {\n /**\n * 指定为 DropDown Button 类型\n */\n type: 'dropdown-button';\n\n /**\n * 是否独占一行 `display: block`\n */\n block?: boolean;\n\n /**\n * 给 Button 配置 className。\n */\n btnClassName?: SchemaClassName;\n\n /**\n * 按钮集合\n */\n buttons?: Array<ActionSchema | DividerSchema | 'divider'>;\n\n /**\n * 按钮文字\n */\n label?: string;\n\n /**\n * 按钮级别,样式\n */\n level?: 'info' | 'success' | 'danger' | 'warning' | 'primary' | 'link';\n\n /**\n * 按钮提示文字,hover 时显示\n */\n // tooltip?: SchemaTooltip;\n\n /**\n * 点击外部是否关闭\n */\n closeOnOutside?: boolean;\n\n /**\n * 点击内容是否关闭\n */\n closeOnClick?: boolean;\n\n /**\n * 按钮大小\n */\n size?: 'xs' | 'sm' | 'md' | 'lg';\n\n /**\n * 对齐方式\n */\n align?: 'left' | 'right';\n\n /**\n * 是否只显示图标。\n */\n iconOnly?: boolean;\n\n /**\n * 触发条件,默认是 click\n */\n trigger?: 'click' | 'hover';\n}\n\nexport interface DropDownButtonProps\n extends RendererProps,\n Omit<DropdownButtonSchema, 'type' | 'className'> {\n disabledTip?: string | TooltipObject;\n /**\n * 按钮提示文字,hover focus 时显示\n */\n tooltip?: string | TooltipObject;\n placement?: 'top' | 'right' | 'bottom' | 'left';\n tooltipContainer?: any;\n tooltipTrigger?: Trigger | Array<Trigger>;\n tooltipRootClose?: boolean;\n defaultIsOpened?: boolean;\n label?: any;\n // 激活状态\n isActived?: boolean;\n}\n\nexport interface DropDownButtonState {\n isOpened: boolean;\n}\n\nexport default class DropDownButton extends React.Component<\n DropDownButtonProps,\n DropDownButtonState\n> {\n state: DropDownButtonState = {\n isOpened: false\n };\n\n static defaultProps: Pick<\n DropDownButtonProps,\n 'placement' | 'tooltipTrigger' | 'tooltipRootClose'\n > = {\n placement: 'top',\n tooltipTrigger: ['hover', 'focus'],\n tooltipRootClose: false\n };\n\n target: any;\n constructor(props: DropDownButtonProps) {\n super(props);\n\n this.open = this.open.bind(this);\n this.close = this.close.bind(this);\n this.toogle = this.toogle.bind(this);\n this.domRef = this.domRef.bind(this);\n }\n\n componentDidMount() {\n if (this.props.defaultIsOpened) {\n this.setState({\n isOpened: true\n });\n }\n }\n\n domRef(ref: any) {\n this.target = ref;\n }\n\n toogle(e: React.MouseEvent<any>) {\n e.preventDefault();\n\n this.setState({\n isOpened: !this.state.isOpened\n });\n }\n\n open() {\n this.setState({\n isOpened: true\n });\n }\n\n close() {\n this.setState({\n isOpened: false\n });\n }\n\n renderOuter() {\n const {\n render,\n buttons,\n data,\n popOverContainer,\n classnames: cx,\n classPrefix: ns,\n children,\n align,\n closeOnClick,\n closeOnOutside\n } = this.props;\n\n let body = (\n <RootClose\n disabled={!this.state.isOpened}\n onRootClose={closeOnOutside !== false ? this.close : noop}\n >\n {(ref: any) => {\n return (\n <ul\n className={cx('DropDown-menu')}\n onClick={closeOnClick ? this.close : noop}\n ref={ref}\n >\n {children\n ? children\n : Array.isArray(buttons)\n ? buttons.map((button, index) => {\n if (\n typeof button !== 'string' &&\n !isVisible(button, data)\n ) {\n return null;\n } else if (\n button === 'divider' ||\n button.type === 'divider'\n ) {\n return (\n <li key={index} className={cx('DropDown-divider')} />\n );\n }\n\n return (\n <li\n key={index}\n className={\n isDisabled(button, data) ? 'is-disabled' : ''\n }\n >\n {render(`button/${index}`, {\n type: 'button',\n ...(button as any),\n isMenuItem: true\n })}\n </li>\n );\n })\n : null}\n </ul>\n );\n }}\n </RootClose>\n );\n\n if (popOverContainer) {\n return (\n <Overlay container={popOverContainer} target={() => this.target} show>\n <PopOver\n overlay\n onHide={this.close}\n classPrefix={ns}\n className={cx('DropDown-popover')}\n style={{minWidth: this.target?.offsetWidth}}\n >\n {body}\n </PopOver>\n </Overlay>\n );\n }\n\n return body;\n }\n\n render() {\n const {\n tooltip,\n placement,\n tooltipContainer,\n tooltipTrigger,\n tooltipRootClose,\n disabledTip,\n block,\n disabled,\n btnDisabled,\n btnClassName,\n size,\n label,\n level,\n primary,\n className,\n classnames: cx,\n align,\n iconOnly,\n icon,\n isActived,\n trigger,\n data\n } = this.props;\n\n return (\n <div\n className={cx(\n 'DropDown ',\n {\n 'DropDown--block': block,\n 'DropDown--alignRight': align === 'right',\n 'is-opened': this.state.isOpened,\n 'is-actived': isActived\n },\n className\n )}\n onMouseEnter={trigger === 'hover' ? this.open : () => {}}\n onMouseLeave={trigger === 'hover' ? this.close : () => {}}\n ref={this.domRef}\n >\n <TooltipWrapper\n placement={placement}\n tooltip={disabled ? disabledTip : tooltip}\n container={tooltipContainer}\n trigger={tooltipTrigger}\n rootClose={tooltipRootClose}\n >\n <button\n onClick={this.toogle}\n disabled={disabled || btnDisabled}\n className={cx(\n 'Button',\n btnClassName,\n typeof level === 'undefined'\n ? 'Button--default'\n : level\n ? `Button--${level}`\n : '',\n {\n 'Button--block': block,\n 'Button--primary': primary,\n 'Button--iconOnly': iconOnly\n },\n size ? `Button--${size}` : ''\n )}\n >\n {icon ? (\n typeof icon === 'string' ? (\n <i className={cx(icon, 'm-r-xs')} />\n ) : (\n icon\n )\n ) : null}\n {typeof label === 'string' ? filter(label, data) : label}\n <span className={cx('DropDown-caret')}>\n
|
11
|
+
"import React from 'react';\nimport {Renderer, RendererProps} from '../factory';\nimport Overlay from '../components/Overlay';\nimport PopOver from '../components/PopOver';\nimport TooltipWrapper from '../components/TooltipWrapper';\nimport type {TooltipObject, Trigger} from '../components/TooltipWrapper';\nimport {isDisabled, isVisible, noop} from '../utils/helper';\nimport {filter} from '../utils/tpl';\nimport {Icon} from '../components/icons';\nimport {BaseSchema, SchemaClassName} from '../Schema';\nimport {ActionSchema} from './Action';\nimport {DividerSchema} from './Divider';\nimport {RootClose} from '../utils/RootClose';\n\n/**\n * 下拉按钮渲染器。\n * 文档:https://baidu.gitee.io/amis/docs/components/dropdown-button\n */\nexport interface DropdownButtonSchema extends BaseSchema {\n /**\n * 指定为 DropDown Button 类型\n */\n type: 'dropdown-button';\n\n /**\n * 是否独占一行 `display: block`\n */\n block?: boolean;\n\n /**\n * 给 Button 配置 className。\n */\n btnClassName?: SchemaClassName;\n\n /**\n * 按钮集合\n */\n buttons?: Array<ActionSchema | DividerSchema | 'divider'>;\n\n /**\n * 按钮文字\n */\n label?: string;\n\n /**\n * 按钮级别,样式\n */\n level?: 'info' | 'success' | 'danger' | 'warning' | 'primary' | 'link';\n\n /**\n * 按钮提示文字,hover 时显示\n */\n // tooltip?: SchemaTooltip;\n\n /**\n * 点击外部是否关闭\n */\n closeOnOutside?: boolean;\n\n /**\n * 点击内容是否关闭\n */\n closeOnClick?: boolean;\n\n /**\n * 按钮大小\n */\n size?: 'xs' | 'sm' | 'md' | 'lg';\n\n /**\n * 对齐方式\n */\n align?: 'left' | 'right';\n\n /**\n * 是否只显示图标。\n */\n iconOnly?: boolean;\n\n /**\n * 触发条件,默认是 click\n */\n trigger?: 'click' | 'hover';\n /**\n * 是否显示下拉按钮\n */\n hideCaret?: boolean;\n}\n\nexport interface DropDownButtonProps\n extends RendererProps,\n Omit<DropdownButtonSchema, 'type' | 'className'> {\n disabledTip?: string | TooltipObject;\n /**\n * 按钮提示文字,hover focus 时显示\n */\n tooltip?: string | TooltipObject;\n placement?: 'top' | 'right' | 'bottom' | 'left';\n tooltipContainer?: any;\n tooltipTrigger?: Trigger | Array<Trigger>;\n tooltipRootClose?: boolean;\n defaultIsOpened?: boolean;\n label?: any;\n // 激活状态\n isActived?: boolean;\n}\n\nexport interface DropDownButtonState {\n isOpened: boolean;\n}\n\nexport default class DropDownButton extends React.Component<\n DropDownButtonProps,\n DropDownButtonState\n> {\n state: DropDownButtonState = {\n isOpened: false\n };\n\n static defaultProps: Pick<\n DropDownButtonProps,\n 'placement' | 'tooltipTrigger' | 'tooltipRootClose'\n > = {\n placement: 'top',\n tooltipTrigger: ['hover', 'focus'],\n tooltipRootClose: false\n };\n\n target: any;\n constructor(props: DropDownButtonProps) {\n super(props);\n\n this.open = this.open.bind(this);\n this.close = this.close.bind(this);\n this.toogle = this.toogle.bind(this);\n this.domRef = this.domRef.bind(this);\n }\n\n componentDidMount() {\n if (this.props.defaultIsOpened) {\n this.setState({\n isOpened: true\n });\n }\n }\n\n domRef(ref: any) {\n this.target = ref;\n }\n\n toogle(e: React.MouseEvent<any>) {\n e.preventDefault();\n\n this.setState({\n isOpened: !this.state.isOpened\n });\n }\n\n open() {\n this.setState({\n isOpened: true\n });\n }\n\n close() {\n this.setState({\n isOpened: false\n });\n }\n\n renderOuter() {\n const {\n render,\n buttons,\n data,\n popOverContainer,\n classnames: cx,\n classPrefix: ns,\n children,\n align,\n closeOnClick,\n closeOnOutside\n } = this.props;\n\n let body = (\n <RootClose\n disabled={!this.state.isOpened}\n onRootClose={closeOnOutside !== false ? this.close : noop}\n >\n {(ref: any) => {\n return (\n <ul\n className={cx('DropDown-menu')}\n onClick={closeOnClick ? this.close : noop}\n ref={ref}\n >\n {children\n ? children\n : Array.isArray(buttons)\n ? buttons.map((button, index) => {\n if (\n typeof button !== 'string' &&\n !isVisible(button, data)\n ) {\n return null;\n } else if (\n button === 'divider' ||\n button.type === 'divider'\n ) {\n return (\n <li key={index} className={cx('DropDown-divider')} />\n );\n }\n\n return (\n <li\n key={index}\n className={\n isDisabled(button, data) ? 'is-disabled' : ''\n }\n >\n {render(`button/${index}`, {\n type: 'button',\n ...(button as any),\n isMenuItem: true\n })}\n </li>\n );\n })\n : null}\n </ul>\n );\n }}\n </RootClose>\n );\n\n if (popOverContainer) {\n return (\n <Overlay container={popOverContainer} target={() => this.target} show>\n <PopOver\n overlay\n onHide={this.close}\n classPrefix={ns}\n className={cx('DropDown-popover')}\n style={{minWidth: this.target?.offsetWidth}}\n >\n {body}\n </PopOver>\n </Overlay>\n );\n }\n\n return body;\n }\n\n render() {\n const {\n tooltip,\n placement,\n tooltipContainer,\n tooltipTrigger,\n tooltipRootClose,\n disabledTip,\n block,\n disabled,\n btnDisabled,\n btnClassName,\n size,\n label,\n level,\n primary,\n className,\n classnames: cx,\n align,\n iconOnly,\n icon,\n isActived,\n trigger,\n data,\n hideCaret\n } = this.props;\n\n return (\n <div\n className={cx(\n 'DropDown ',\n {\n 'DropDown--block': block,\n 'DropDown--alignRight': align === 'right',\n 'is-opened': this.state.isOpened,\n 'is-actived': isActived\n },\n className\n )}\n onMouseEnter={trigger === 'hover' ? this.open : () => {}}\n onMouseLeave={trigger === 'hover' ? this.close : () => {}}\n ref={this.domRef}\n >\n <TooltipWrapper\n placement={placement}\n tooltip={disabled ? disabledTip : tooltip}\n container={tooltipContainer}\n trigger={tooltipTrigger}\n rootClose={tooltipRootClose}\n >\n <button\n onClick={this.toogle}\n disabled={disabled || btnDisabled}\n className={cx(\n 'Button',\n btnClassName,\n typeof level === 'undefined'\n ? 'Button--default'\n : level\n ? `Button--${level}`\n : '',\n {\n 'Button--block': block,\n 'Button--primary': primary,\n 'Button--iconOnly': iconOnly\n },\n size ? `Button--${size}` : ''\n )}\n >\n {icon ? (\n typeof icon === 'string' ? (\n <i className={cx(icon, 'm-r-xs')} />\n ) : (\n icon\n )\n ) : null}\n {typeof label === 'string' ? filter(label, data) : label}\n {\n !hideCaret\n ? <span className={cx('DropDown-caret')} >\n <Icon icon=\"caret\" className=\"icon\" />\n </span>\n : null\n }\n </button>\n </TooltipWrapper>\n {this.state.isOpened ? this.renderOuter() : null}\n </div>\n );\n }\n}\n\n@Renderer({\n type: 'dropdown-button'\n})\nexport class DropDownButtonRenderer extends DropDownButton {}\n"
|
12
12
|
]
|
13
13
|
}
|
package/lib/renderers/Nav.d.ts
CHANGED
@@ -1,9 +1,11 @@
|
|
1
1
|
/// <reference types="hoist-non-react-statics" />
|
2
2
|
import React from 'react';
|
3
|
-
import
|
3
|
+
import Sortable from 'sortablejs';
|
4
|
+
import { RendererEnv, RendererProps } from '../factory';
|
4
5
|
import { IScopedContext } from '../Scoped';
|
5
6
|
import { ThemeProps } from '../theme';
|
6
7
|
import { BaseSchema, SchemaApi, SchemaIcon, SchemaUrlPath, SchemaCollection } from '../Schema';
|
8
|
+
import { BadgeSchema } from '../components/Badge';
|
7
9
|
export declare type NavItemSchema = {
|
8
10
|
/**
|
9
11
|
* 文字说明
|
@@ -20,6 +22,10 @@ export declare type NavItemSchema = {
|
|
20
22
|
defer?: boolean;
|
21
23
|
deferApi?: SchemaApi;
|
22
24
|
children?: Array<NavItemSchema>;
|
25
|
+
/**
|
26
|
+
* 角标
|
27
|
+
*/
|
28
|
+
badge?: BadgeSchema;
|
23
29
|
} & Omit<BaseSchema, 'type'>;
|
24
30
|
/**
|
25
31
|
* Nav 导航渲染器
|
@@ -50,6 +56,22 @@ export interface NavSchema extends BaseSchema {
|
|
50
56
|
* true 为垂直排列,false 为水平排列类似如 tabs。
|
51
57
|
*/
|
52
58
|
stacked?: boolean;
|
59
|
+
/**
|
60
|
+
* 更多操作菜单列表
|
61
|
+
*/
|
62
|
+
itemActions?: SchemaCollection;
|
63
|
+
/**
|
64
|
+
* 可拖拽
|
65
|
+
*/
|
66
|
+
draggable?: boolean;
|
67
|
+
/**
|
68
|
+
* 保存排序的 api
|
69
|
+
*/
|
70
|
+
saveOrderApi?: SchemaApi;
|
71
|
+
/**
|
72
|
+
* 角标
|
73
|
+
*/
|
74
|
+
badge?: BadgeSchema;
|
53
75
|
}
|
54
76
|
export interface Link {
|
55
77
|
className?: string;
|
@@ -65,6 +87,7 @@ export interface Link {
|
|
65
87
|
loading?: boolean;
|
66
88
|
loaded?: boolean;
|
67
89
|
[propName: string]: any;
|
90
|
+
badge?: BadgeSchema;
|
68
91
|
}
|
69
92
|
export interface Links extends Array<Link> {
|
70
93
|
}
|
@@ -79,29 +102,36 @@ export interface NavigationProps extends ThemeProps, Omit<NavSchema, 'type' | 'c
|
|
79
102
|
links?: Array<Link>;
|
80
103
|
loading?: boolean;
|
81
104
|
render: RendererProps['render'];
|
105
|
+
env: RendererEnv;
|
106
|
+
reload?: any;
|
82
107
|
}
|
83
108
|
export declare class Navigation extends React.Component<NavigationProps, NavigationState> {
|
84
109
|
static defaultProps: {
|
85
110
|
indentSize: number;
|
86
111
|
};
|
112
|
+
sortable: Sortable[];
|
113
|
+
id: string;
|
114
|
+
dragRef?: HTMLElement;
|
87
115
|
handleClick(link: Link): void;
|
88
116
|
toggleLink(target: Link): void;
|
117
|
+
dragRefFn(ref: any): void;
|
118
|
+
initDragging(ref: HTMLElement): void;
|
89
119
|
renderItem(link: Link, index: number, depth?: number): JSX.Element | null;
|
90
120
|
render(): JSX.Element;
|
91
121
|
}
|
92
122
|
declare const ThemedNavigation: {
|
93
|
-
new (props: (Pick<Omit<NavigationProps, keyof ThemeProps>, "source" | "hidden" | "disabled" | "onToggle" | "loading" | "visible" | "render" | "links" | "onSelect" | "$ref" | "disabledOn" | "hiddenOn" | "visibleOn" | "deferApi" | "stacked" | "togglerClassName"> & Partial<Pick<Omit<NavigationProps, keyof ThemeProps>, "indentSize">> & Partial<Pick<{
|
123
|
+
new (props: (Pick<Omit<NavigationProps, keyof ThemeProps>, "source" | "hidden" | "reload" | "disabled" | "onToggle" | "loading" | "visible" | "render" | "env" | "links" | "draggable" | "onSelect" | "$ref" | "disabledOn" | "hiddenOn" | "visibleOn" | "badge" | "deferApi" | "itemActions" | "stacked" | "saveOrderApi" | "togglerClassName"> & Partial<Pick<Omit<NavigationProps, keyof ThemeProps>, "indentSize">> & Partial<Pick<{
|
94
124
|
indentSize: number;
|
95
|
-
}, never>> & import("../theme").ThemeOutterProps) | Readonly<Pick<Omit<NavigationProps, keyof ThemeProps>, "source" | "hidden" | "disabled" | "onToggle" | "loading" | "visible" | "render" | "links" | "onSelect" | "$ref" | "disabledOn" | "hiddenOn" | "visibleOn" | "deferApi" | "stacked" | "togglerClassName"> & Partial<Pick<Omit<NavigationProps, keyof ThemeProps>, "indentSize">> & Partial<Pick<{
|
125
|
+
}, never>> & import("../theme").ThemeOutterProps) | Readonly<Pick<Omit<NavigationProps, keyof ThemeProps>, "source" | "hidden" | "reload" | "disabled" | "onToggle" | "loading" | "visible" | "render" | "env" | "links" | "draggable" | "onSelect" | "$ref" | "disabledOn" | "hiddenOn" | "visibleOn" | "badge" | "deferApi" | "itemActions" | "stacked" | "saveOrderApi" | "togglerClassName"> & Partial<Pick<Omit<NavigationProps, keyof ThemeProps>, "indentSize">> & Partial<Pick<{
|
96
126
|
indentSize: number;
|
97
127
|
}, never>> & import("../theme").ThemeOutterProps>): {
|
98
128
|
render(): JSX.Element;
|
99
129
|
context: any;
|
100
|
-
setState<K extends never>(state: {} | ((prevState: Readonly<{}>, props: Readonly<Pick<Omit<NavigationProps, keyof ThemeProps>, "source" | "hidden" | "disabled" | "onToggle" | "loading" | "visible" | "render" | "links" | "onSelect" | "$ref" | "disabledOn" | "hiddenOn" | "visibleOn" | "deferApi" | "stacked" | "togglerClassName"> & Partial<Pick<Omit<NavigationProps, keyof ThemeProps>, "indentSize">> & Partial<Pick<{
|
130
|
+
setState<K extends never>(state: {} | ((prevState: Readonly<{}>, props: Readonly<Pick<Omit<NavigationProps, keyof ThemeProps>, "source" | "hidden" | "reload" | "disabled" | "onToggle" | "loading" | "visible" | "render" | "env" | "links" | "draggable" | "onSelect" | "$ref" | "disabledOn" | "hiddenOn" | "visibleOn" | "badge" | "deferApi" | "itemActions" | "stacked" | "saveOrderApi" | "togglerClassName"> & Partial<Pick<Omit<NavigationProps, keyof ThemeProps>, "indentSize">> & Partial<Pick<{
|
101
131
|
indentSize: number;
|
102
132
|
}, never>> & import("../theme").ThemeOutterProps>) => {} | Pick<{}, K> | null) | Pick<{}, K> | null, callback?: (() => void) | undefined): void;
|
103
133
|
forceUpdate(callback?: (() => void) | undefined): void;
|
104
|
-
readonly props: Readonly<Pick<Omit<NavigationProps, keyof ThemeProps>, "source" | "hidden" | "disabled" | "onToggle" | "loading" | "visible" | "render" | "links" | "onSelect" | "$ref" | "disabledOn" | "hiddenOn" | "visibleOn" | "deferApi" | "stacked" | "togglerClassName"> & Partial<Pick<Omit<NavigationProps, keyof ThemeProps>, "indentSize">> & Partial<Pick<{
|
134
|
+
readonly props: Readonly<Pick<Omit<NavigationProps, keyof ThemeProps>, "source" | "hidden" | "reload" | "disabled" | "onToggle" | "loading" | "visible" | "render" | "env" | "links" | "draggable" | "onSelect" | "$ref" | "disabledOn" | "hiddenOn" | "visibleOn" | "badge" | "deferApi" | "itemActions" | "stacked" | "saveOrderApi" | "togglerClassName"> & Partial<Pick<Omit<NavigationProps, keyof ThemeProps>, "indentSize">> & Partial<Pick<{
|
105
135
|
indentSize: number;
|
106
136
|
}, never>> & import("../theme").ThemeOutterProps> & Readonly<{
|
107
137
|
children?: React.ReactNode;
|
@@ -111,42 +141,42 @@ declare const ThemedNavigation: {
|
|
111
141
|
[key: string]: React.ReactInstance;
|
112
142
|
};
|
113
143
|
componentDidMount?(): void;
|
114
|
-
shouldComponentUpdate?(nextProps: Readonly<Pick<Omit<NavigationProps, keyof ThemeProps>, "source" | "hidden" | "disabled" | "onToggle" | "loading" | "visible" | "render" | "links" | "onSelect" | "$ref" | "disabledOn" | "hiddenOn" | "visibleOn" | "deferApi" | "stacked" | "togglerClassName"> & Partial<Pick<Omit<NavigationProps, keyof ThemeProps>, "indentSize">> & Partial<Pick<{
|
144
|
+
shouldComponentUpdate?(nextProps: Readonly<Pick<Omit<NavigationProps, keyof ThemeProps>, "source" | "hidden" | "reload" | "disabled" | "onToggle" | "loading" | "visible" | "render" | "env" | "links" | "draggable" | "onSelect" | "$ref" | "disabledOn" | "hiddenOn" | "visibleOn" | "badge" | "deferApi" | "itemActions" | "stacked" | "saveOrderApi" | "togglerClassName"> & Partial<Pick<Omit<NavigationProps, keyof ThemeProps>, "indentSize">> & Partial<Pick<{
|
115
145
|
indentSize: number;
|
116
146
|
}, never>> & import("../theme").ThemeOutterProps>, nextState: Readonly<{}>, nextContext: any): boolean;
|
117
147
|
componentWillUnmount?(): void;
|
118
148
|
componentDidCatch?(error: Error, errorInfo: React.ErrorInfo): void;
|
119
|
-
getSnapshotBeforeUpdate?(prevProps: Readonly<Pick<Omit<NavigationProps, keyof ThemeProps>, "source" | "hidden" | "disabled" | "onToggle" | "loading" | "visible" | "render" | "links" | "onSelect" | "$ref" | "disabledOn" | "hiddenOn" | "visibleOn" | "deferApi" | "stacked" | "togglerClassName"> & Partial<Pick<Omit<NavigationProps, keyof ThemeProps>, "indentSize">> & Partial<Pick<{
|
149
|
+
getSnapshotBeforeUpdate?(prevProps: Readonly<Pick<Omit<NavigationProps, keyof ThemeProps>, "source" | "hidden" | "reload" | "disabled" | "onToggle" | "loading" | "visible" | "render" | "env" | "links" | "draggable" | "onSelect" | "$ref" | "disabledOn" | "hiddenOn" | "visibleOn" | "badge" | "deferApi" | "itemActions" | "stacked" | "saveOrderApi" | "togglerClassName"> & Partial<Pick<Omit<NavigationProps, keyof ThemeProps>, "indentSize">> & Partial<Pick<{
|
120
150
|
indentSize: number;
|
121
151
|
}, never>> & import("../theme").ThemeOutterProps>, prevState: Readonly<{}>): any;
|
122
|
-
componentDidUpdate?(prevProps: Readonly<Pick<Omit<NavigationProps, keyof ThemeProps>, "source" | "hidden" | "disabled" | "onToggle" | "loading" | "visible" | "render" | "links" | "onSelect" | "$ref" | "disabledOn" | "hiddenOn" | "visibleOn" | "deferApi" | "stacked" | "togglerClassName"> & Partial<Pick<Omit<NavigationProps, keyof ThemeProps>, "indentSize">> & Partial<Pick<{
|
152
|
+
componentDidUpdate?(prevProps: Readonly<Pick<Omit<NavigationProps, keyof ThemeProps>, "source" | "hidden" | "reload" | "disabled" | "onToggle" | "loading" | "visible" | "render" | "env" | "links" | "draggable" | "onSelect" | "$ref" | "disabledOn" | "hiddenOn" | "visibleOn" | "badge" | "deferApi" | "itemActions" | "stacked" | "saveOrderApi" | "togglerClassName"> & Partial<Pick<Omit<NavigationProps, keyof ThemeProps>, "indentSize">> & Partial<Pick<{
|
123
153
|
indentSize: number;
|
124
154
|
}, never>> & import("../theme").ThemeOutterProps>, prevState: Readonly<{}>, snapshot?: any): void;
|
125
155
|
componentWillMount?(): void;
|
126
156
|
UNSAFE_componentWillMount?(): void;
|
127
|
-
componentWillReceiveProps?(nextProps: Readonly<Pick<Omit<NavigationProps, keyof ThemeProps>, "source" | "hidden" | "disabled" | "onToggle" | "loading" | "visible" | "render" | "links" | "onSelect" | "$ref" | "disabledOn" | "hiddenOn" | "visibleOn" | "deferApi" | "stacked" | "togglerClassName"> & Partial<Pick<Omit<NavigationProps, keyof ThemeProps>, "indentSize">> & Partial<Pick<{
|
157
|
+
componentWillReceiveProps?(nextProps: Readonly<Pick<Omit<NavigationProps, keyof ThemeProps>, "source" | "hidden" | "reload" | "disabled" | "onToggle" | "loading" | "visible" | "render" | "env" | "links" | "draggable" | "onSelect" | "$ref" | "disabledOn" | "hiddenOn" | "visibleOn" | "badge" | "deferApi" | "itemActions" | "stacked" | "saveOrderApi" | "togglerClassName"> & Partial<Pick<Omit<NavigationProps, keyof ThemeProps>, "indentSize">> & Partial<Pick<{
|
128
158
|
indentSize: number;
|
129
159
|
}, never>> & import("../theme").ThemeOutterProps>, nextContext: any): void;
|
130
|
-
UNSAFE_componentWillReceiveProps?(nextProps: Readonly<Pick<Omit<NavigationProps, keyof ThemeProps>, "source" | "hidden" | "disabled" | "onToggle" | "loading" | "visible" | "render" | "links" | "onSelect" | "$ref" | "disabledOn" | "hiddenOn" | "visibleOn" | "deferApi" | "stacked" | "togglerClassName"> & Partial<Pick<Omit<NavigationProps, keyof ThemeProps>, "indentSize">> & Partial<Pick<{
|
160
|
+
UNSAFE_componentWillReceiveProps?(nextProps: Readonly<Pick<Omit<NavigationProps, keyof ThemeProps>, "source" | "hidden" | "reload" | "disabled" | "onToggle" | "loading" | "visible" | "render" | "env" | "links" | "draggable" | "onSelect" | "$ref" | "disabledOn" | "hiddenOn" | "visibleOn" | "badge" | "deferApi" | "itemActions" | "stacked" | "saveOrderApi" | "togglerClassName"> & Partial<Pick<Omit<NavigationProps, keyof ThemeProps>, "indentSize">> & Partial<Pick<{
|
131
161
|
indentSize: number;
|
132
162
|
}, never>> & import("../theme").ThemeOutterProps>, nextContext: any): void;
|
133
|
-
componentWillUpdate?(nextProps: Readonly<Pick<Omit<NavigationProps, keyof ThemeProps>, "source" | "hidden" | "disabled" | "onToggle" | "loading" | "visible" | "render" | "links" | "onSelect" | "$ref" | "disabledOn" | "hiddenOn" | "visibleOn" | "deferApi" | "stacked" | "togglerClassName"> & Partial<Pick<Omit<NavigationProps, keyof ThemeProps>, "indentSize">> & Partial<Pick<{
|
163
|
+
componentWillUpdate?(nextProps: Readonly<Pick<Omit<NavigationProps, keyof ThemeProps>, "source" | "hidden" | "reload" | "disabled" | "onToggle" | "loading" | "visible" | "render" | "env" | "links" | "draggable" | "onSelect" | "$ref" | "disabledOn" | "hiddenOn" | "visibleOn" | "badge" | "deferApi" | "itemActions" | "stacked" | "saveOrderApi" | "togglerClassName"> & Partial<Pick<Omit<NavigationProps, keyof ThemeProps>, "indentSize">> & Partial<Pick<{
|
134
164
|
indentSize: number;
|
135
165
|
}, never>> & import("../theme").ThemeOutterProps>, nextState: Readonly<{}>, nextContext: any): void;
|
136
|
-
UNSAFE_componentWillUpdate?(nextProps: Readonly<Pick<Omit<NavigationProps, keyof ThemeProps>, "source" | "hidden" | "disabled" | "onToggle" | "loading" | "visible" | "render" | "links" | "onSelect" | "$ref" | "disabledOn" | "hiddenOn" | "visibleOn" | "deferApi" | "stacked" | "togglerClassName"> & Partial<Pick<Omit<NavigationProps, keyof ThemeProps>, "indentSize">> & Partial<Pick<{
|
166
|
+
UNSAFE_componentWillUpdate?(nextProps: Readonly<Pick<Omit<NavigationProps, keyof ThemeProps>, "source" | "hidden" | "reload" | "disabled" | "onToggle" | "loading" | "visible" | "render" | "env" | "links" | "draggable" | "onSelect" | "$ref" | "disabledOn" | "hiddenOn" | "visibleOn" | "badge" | "deferApi" | "itemActions" | "stacked" | "saveOrderApi" | "togglerClassName"> & Partial<Pick<Omit<NavigationProps, keyof ThemeProps>, "indentSize">> & Partial<Pick<{
|
137
167
|
indentSize: number;
|
138
168
|
}, never>> & import("../theme").ThemeOutterProps>, nextState: Readonly<{}>, nextContext: any): void;
|
139
169
|
};
|
140
|
-
new (props: Pick<Omit<NavigationProps, keyof ThemeProps>, "source" | "hidden" | "disabled" | "onToggle" | "loading" | "visible" | "render" | "links" | "onSelect" | "$ref" | "disabledOn" | "hiddenOn" | "visibleOn" | "deferApi" | "stacked" | "togglerClassName"> & Partial<Pick<Omit<NavigationProps, keyof ThemeProps>, "indentSize">> & Partial<Pick<{
|
170
|
+
new (props: Pick<Omit<NavigationProps, keyof ThemeProps>, "source" | "hidden" | "reload" | "disabled" | "onToggle" | "loading" | "visible" | "render" | "env" | "links" | "draggable" | "onSelect" | "$ref" | "disabledOn" | "hiddenOn" | "visibleOn" | "badge" | "deferApi" | "itemActions" | "stacked" | "saveOrderApi" | "togglerClassName"> & Partial<Pick<Omit<NavigationProps, keyof ThemeProps>, "indentSize">> & Partial<Pick<{
|
141
171
|
indentSize: number;
|
142
172
|
}, never>> & import("../theme").ThemeOutterProps, context: any): {
|
143
173
|
render(): JSX.Element;
|
144
174
|
context: any;
|
145
|
-
setState<K extends never>(state: {} | ((prevState: Readonly<{}>, props: Readonly<Pick<Omit<NavigationProps, keyof ThemeProps>, "source" | "hidden" | "disabled" | "onToggle" | "loading" | "visible" | "render" | "links" | "onSelect" | "$ref" | "disabledOn" | "hiddenOn" | "visibleOn" | "deferApi" | "stacked" | "togglerClassName"> & Partial<Pick<Omit<NavigationProps, keyof ThemeProps>, "indentSize">> & Partial<Pick<{
|
175
|
+
setState<K extends never>(state: {} | ((prevState: Readonly<{}>, props: Readonly<Pick<Omit<NavigationProps, keyof ThemeProps>, "source" | "hidden" | "reload" | "disabled" | "onToggle" | "loading" | "visible" | "render" | "env" | "links" | "draggable" | "onSelect" | "$ref" | "disabledOn" | "hiddenOn" | "visibleOn" | "badge" | "deferApi" | "itemActions" | "stacked" | "saveOrderApi" | "togglerClassName"> & Partial<Pick<Omit<NavigationProps, keyof ThemeProps>, "indentSize">> & Partial<Pick<{
|
146
176
|
indentSize: number;
|
147
177
|
}, never>> & import("../theme").ThemeOutterProps>) => {} | Pick<{}, K> | null) | Pick<{}, K> | null, callback?: (() => void) | undefined): void;
|
148
178
|
forceUpdate(callback?: (() => void) | undefined): void;
|
149
|
-
readonly props: Readonly<Pick<Omit<NavigationProps, keyof ThemeProps>, "source" | "hidden" | "disabled" | "onToggle" | "loading" | "visible" | "render" | "links" | "onSelect" | "$ref" | "disabledOn" | "hiddenOn" | "visibleOn" | "deferApi" | "stacked" | "togglerClassName"> & Partial<Pick<Omit<NavigationProps, keyof ThemeProps>, "indentSize">> & Partial<Pick<{
|
179
|
+
readonly props: Readonly<Pick<Omit<NavigationProps, keyof ThemeProps>, "source" | "hidden" | "reload" | "disabled" | "onToggle" | "loading" | "visible" | "render" | "env" | "links" | "draggable" | "onSelect" | "$ref" | "disabledOn" | "hiddenOn" | "visibleOn" | "badge" | "deferApi" | "itemActions" | "stacked" | "saveOrderApi" | "togglerClassName"> & Partial<Pick<Omit<NavigationProps, keyof ThemeProps>, "indentSize">> & Partial<Pick<{
|
150
180
|
indentSize: number;
|
151
181
|
}, never>> & import("../theme").ThemeOutterProps> & Readonly<{
|
152
182
|
children?: React.ReactNode;
|
@@ -156,29 +186,29 @@ declare const ThemedNavigation: {
|
|
156
186
|
[key: string]: React.ReactInstance;
|
157
187
|
};
|
158
188
|
componentDidMount?(): void;
|
159
|
-
shouldComponentUpdate?(nextProps: Readonly<Pick<Omit<NavigationProps, keyof ThemeProps>, "source" | "hidden" | "disabled" | "onToggle" | "loading" | "visible" | "render" | "links" | "onSelect" | "$ref" | "disabledOn" | "hiddenOn" | "visibleOn" | "deferApi" | "stacked" | "togglerClassName"> & Partial<Pick<Omit<NavigationProps, keyof ThemeProps>, "indentSize">> & Partial<Pick<{
|
189
|
+
shouldComponentUpdate?(nextProps: Readonly<Pick<Omit<NavigationProps, keyof ThemeProps>, "source" | "hidden" | "reload" | "disabled" | "onToggle" | "loading" | "visible" | "render" | "env" | "links" | "draggable" | "onSelect" | "$ref" | "disabledOn" | "hiddenOn" | "visibleOn" | "badge" | "deferApi" | "itemActions" | "stacked" | "saveOrderApi" | "togglerClassName"> & Partial<Pick<Omit<NavigationProps, keyof ThemeProps>, "indentSize">> & Partial<Pick<{
|
160
190
|
indentSize: number;
|
161
191
|
}, never>> & import("../theme").ThemeOutterProps>, nextState: Readonly<{}>, nextContext: any): boolean;
|
162
192
|
componentWillUnmount?(): void;
|
163
193
|
componentDidCatch?(error: Error, errorInfo: React.ErrorInfo): void;
|
164
|
-
getSnapshotBeforeUpdate?(prevProps: Readonly<Pick<Omit<NavigationProps, keyof ThemeProps>, "source" | "hidden" | "disabled" | "onToggle" | "loading" | "visible" | "render" | "links" | "onSelect" | "$ref" | "disabledOn" | "hiddenOn" | "visibleOn" | "deferApi" | "stacked" | "togglerClassName"> & Partial<Pick<Omit<NavigationProps, keyof ThemeProps>, "indentSize">> & Partial<Pick<{
|
194
|
+
getSnapshotBeforeUpdate?(prevProps: Readonly<Pick<Omit<NavigationProps, keyof ThemeProps>, "source" | "hidden" | "reload" | "disabled" | "onToggle" | "loading" | "visible" | "render" | "env" | "links" | "draggable" | "onSelect" | "$ref" | "disabledOn" | "hiddenOn" | "visibleOn" | "badge" | "deferApi" | "itemActions" | "stacked" | "saveOrderApi" | "togglerClassName"> & Partial<Pick<Omit<NavigationProps, keyof ThemeProps>, "indentSize">> & Partial<Pick<{
|
165
195
|
indentSize: number;
|
166
196
|
}, never>> & import("../theme").ThemeOutterProps>, prevState: Readonly<{}>): any;
|
167
|
-
componentDidUpdate?(prevProps: Readonly<Pick<Omit<NavigationProps, keyof ThemeProps>, "source" | "hidden" | "disabled" | "onToggle" | "loading" | "visible" | "render" | "links" | "onSelect" | "$ref" | "disabledOn" | "hiddenOn" | "visibleOn" | "deferApi" | "stacked" | "togglerClassName"> & Partial<Pick<Omit<NavigationProps, keyof ThemeProps>, "indentSize">> & Partial<Pick<{
|
197
|
+
componentDidUpdate?(prevProps: Readonly<Pick<Omit<NavigationProps, keyof ThemeProps>, "source" | "hidden" | "reload" | "disabled" | "onToggle" | "loading" | "visible" | "render" | "env" | "links" | "draggable" | "onSelect" | "$ref" | "disabledOn" | "hiddenOn" | "visibleOn" | "badge" | "deferApi" | "itemActions" | "stacked" | "saveOrderApi" | "togglerClassName"> & Partial<Pick<Omit<NavigationProps, keyof ThemeProps>, "indentSize">> & Partial<Pick<{
|
168
198
|
indentSize: number;
|
169
199
|
}, never>> & import("../theme").ThemeOutterProps>, prevState: Readonly<{}>, snapshot?: any): void;
|
170
200
|
componentWillMount?(): void;
|
171
201
|
UNSAFE_componentWillMount?(): void;
|
172
|
-
componentWillReceiveProps?(nextProps: Readonly<Pick<Omit<NavigationProps, keyof ThemeProps>, "source" | "hidden" | "disabled" | "onToggle" | "loading" | "visible" | "render" | "links" | "onSelect" | "$ref" | "disabledOn" | "hiddenOn" | "visibleOn" | "deferApi" | "stacked" | "togglerClassName"> & Partial<Pick<Omit<NavigationProps, keyof ThemeProps>, "indentSize">> & Partial<Pick<{
|
202
|
+
componentWillReceiveProps?(nextProps: Readonly<Pick<Omit<NavigationProps, keyof ThemeProps>, "source" | "hidden" | "reload" | "disabled" | "onToggle" | "loading" | "visible" | "render" | "env" | "links" | "draggable" | "onSelect" | "$ref" | "disabledOn" | "hiddenOn" | "visibleOn" | "badge" | "deferApi" | "itemActions" | "stacked" | "saveOrderApi" | "togglerClassName"> & Partial<Pick<Omit<NavigationProps, keyof ThemeProps>, "indentSize">> & Partial<Pick<{
|
173
203
|
indentSize: number;
|
174
204
|
}, never>> & import("../theme").ThemeOutterProps>, nextContext: any): void;
|
175
|
-
UNSAFE_componentWillReceiveProps?(nextProps: Readonly<Pick<Omit<NavigationProps, keyof ThemeProps>, "source" | "hidden" | "disabled" | "onToggle" | "loading" | "visible" | "render" | "links" | "onSelect" | "$ref" | "disabledOn" | "hiddenOn" | "visibleOn" | "deferApi" | "stacked" | "togglerClassName"> & Partial<Pick<Omit<NavigationProps, keyof ThemeProps>, "indentSize">> & Partial<Pick<{
|
205
|
+
UNSAFE_componentWillReceiveProps?(nextProps: Readonly<Pick<Omit<NavigationProps, keyof ThemeProps>, "source" | "hidden" | "reload" | "disabled" | "onToggle" | "loading" | "visible" | "render" | "env" | "links" | "draggable" | "onSelect" | "$ref" | "disabledOn" | "hiddenOn" | "visibleOn" | "badge" | "deferApi" | "itemActions" | "stacked" | "saveOrderApi" | "togglerClassName"> & Partial<Pick<Omit<NavigationProps, keyof ThemeProps>, "indentSize">> & Partial<Pick<{
|
176
206
|
indentSize: number;
|
177
207
|
}, never>> & import("../theme").ThemeOutterProps>, nextContext: any): void;
|
178
|
-
componentWillUpdate?(nextProps: Readonly<Pick<Omit<NavigationProps, keyof ThemeProps>, "source" | "hidden" | "disabled" | "onToggle" | "loading" | "visible" | "render" | "links" | "onSelect" | "$ref" | "disabledOn" | "hiddenOn" | "visibleOn" | "deferApi" | "stacked" | "togglerClassName"> & Partial<Pick<Omit<NavigationProps, keyof ThemeProps>, "indentSize">> & Partial<Pick<{
|
208
|
+
componentWillUpdate?(nextProps: Readonly<Pick<Omit<NavigationProps, keyof ThemeProps>, "source" | "hidden" | "reload" | "disabled" | "onToggle" | "loading" | "visible" | "render" | "env" | "links" | "draggable" | "onSelect" | "$ref" | "disabledOn" | "hiddenOn" | "visibleOn" | "badge" | "deferApi" | "itemActions" | "stacked" | "saveOrderApi" | "togglerClassName"> & Partial<Pick<Omit<NavigationProps, keyof ThemeProps>, "indentSize">> & Partial<Pick<{
|
179
209
|
indentSize: number;
|
180
210
|
}, never>> & import("../theme").ThemeOutterProps>, nextState: Readonly<{}>, nextContext: any): void;
|
181
|
-
UNSAFE_componentWillUpdate?(nextProps: Readonly<Pick<Omit<NavigationProps, keyof ThemeProps>, "source" | "hidden" | "disabled" | "onToggle" | "loading" | "visible" | "render" | "links" | "onSelect" | "$ref" | "disabledOn" | "hiddenOn" | "visibleOn" | "deferApi" | "stacked" | "togglerClassName"> & Partial<Pick<Omit<NavigationProps, keyof ThemeProps>, "indentSize">> & Partial<Pick<{
|
211
|
+
UNSAFE_componentWillUpdate?(nextProps: Readonly<Pick<Omit<NavigationProps, keyof ThemeProps>, "source" | "hidden" | "reload" | "disabled" | "onToggle" | "loading" | "visible" | "render" | "env" | "links" | "draggable" | "onSelect" | "$ref" | "disabledOn" | "hiddenOn" | "visibleOn" | "badge" | "deferApi" | "itemActions" | "stacked" | "saveOrderApi" | "togglerClassName"> & Partial<Pick<Omit<NavigationProps, keyof ThemeProps>, "indentSize">> & Partial<Pick<{
|
182
212
|
indentSize: number;
|
183
213
|
}, never>> & import("../theme").ThemeOutterProps>, nextState: Readonly<{}>, nextContext: any): void;
|
184
214
|
};
|