draft-components 0.52.4 → 0.54.0
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/components/date-picker/calendar-day.d.ts +17 -0
- package/components/date-picker/calendar-day.js +19 -0
- package/components/date-picker/calendar-day.js.map +1 -0
- package/components/date-picker/calendar-header.d.ts +13 -0
- package/components/date-picker/calendar-header.js +19 -0
- package/components/date-picker/calendar-header.js.map +1 -0
- package/components/date-picker/calendar-row.d.ts +7 -0
- package/components/date-picker/calendar-row.js +10 -0
- package/components/date-picker/calendar-row.js.map +1 -0
- package/components/date-picker/calendar.d.ts +13 -0
- package/components/date-picker/calendar.js +63 -0
- package/components/date-picker/calendar.js.map +1 -0
- package/components/date-picker/date-picker.d.ts +11 -0
- package/components/date-picker/date-picker.js +49 -0
- package/components/date-picker/date-picker.js.map +1 -0
- package/components/date-picker/date-range-picker.d.ts +12 -0
- package/components/date-picker/date-range-picker.js +103 -0
- package/components/date-picker/date-range-picker.js.map +1 -0
- package/components/date-picker/index.d.ts +2 -0
- package/components/date-picker/index.js +15 -0
- package/components/date-picker/index.js.map +1 -0
- package/components/date-range-picker-popover/date-preset-list.d.ts +18 -0
- package/components/date-range-picker-popover/date-preset-list.js +21 -0
- package/components/date-range-picker-popover/date-preset-list.js.map +1 -0
- package/components/date-range-picker-popover/date-range-picker-popover.d.ts +20 -0
- package/components/date-range-picker-popover/date-range-picker-popover.js +78 -0
- package/components/date-range-picker-popover/date-range-picker-popover.js.map +1 -0
- package/components/date-range-picker-popover/index.d.ts +1 -0
- package/components/date-range-picker-popover/index.js +14 -0
- package/components/date-range-picker-popover/index.js.map +1 -0
- package/components/index.d.ts +4 -2
- package/components/index.js +4 -2
- package/components/index.js.map +1 -1
- package/components/non-ideal-state-view/non-ideal-state-view.js +1 -1
- package/components/non-ideal-state-view/non-ideal-state-view.js.map +1 -1
- package/components/toast/toast.d.ts +5 -8
- package/components/toast/toast.js +3 -3
- package/components/toast/toast.js.map +1 -1
- package/components/toaster/index.d.ts +1 -0
- package/components/toaster/index.js +14 -0
- package/components/toaster/index.js.map +1 -0
- package/components/toaster/toaster.d.ts +17 -0
- package/components/toaster/toaster.js +78 -0
- package/components/toaster/toaster.js.map +1 -0
- package/components/toaster/use-toasts.d.ts +22 -0
- package/components/toaster/use-toasts.js +42 -0
- package/components/toaster/use-toasts.js.map +1 -0
- package/css/draft-components.css +2 -2
- package/lib/date-helpers.d.ts +34 -0
- package/lib/date-helpers.js +102 -0
- package/lib/date-helpers.js.map +1 -0
- package/lib/index.d.ts +1 -0
- package/lib/index.js +2 -1
- package/lib/index.js.map +1 -1
- package/package.json +1 -5
- package/scss/abstracts/_variables.scss +1 -0
- package/scss/components/_button.scss +14 -12
- package/scss/components/_date-picker.scss +178 -0
- package/scss/components/_date-range-picker-popover.scss +112 -0
- package/scss/components/_index.scss +3 -0
- package/scss/components/_input.scss +1 -1
- package/scss/components/_non-ideal-state-view.scss +4 -0
- package/scss/components/_toast.scss +26 -17
- package/scss/components/_toaster.scss +87 -0
- package/scss/themes/_default-theme.scss +27 -5
package/components/index.d.ts
CHANGED
|
@@ -6,6 +6,7 @@ export * from './breadcrumbs';
|
|
|
6
6
|
export * from './button';
|
|
7
7
|
export * from './buttons-group';
|
|
8
8
|
export * from './checkbox';
|
|
9
|
+
export * from './date-picker';
|
|
9
10
|
export * from './datetime-input';
|
|
10
11
|
export * from './dialog';
|
|
11
12
|
export * from './form-field';
|
|
@@ -13,19 +14,19 @@ export * from './formatted-content';
|
|
|
13
14
|
export * from './inline-message';
|
|
14
15
|
export * from './label';
|
|
15
16
|
export * from './loading-view';
|
|
16
|
-
export * from './number-input';
|
|
17
17
|
export * from './non-ideal-state-view';
|
|
18
|
+
export * from './number-input';
|
|
18
19
|
export * from './password-input';
|
|
19
20
|
export * from './popover';
|
|
20
21
|
export * from './portal';
|
|
21
22
|
export * from './radio-button';
|
|
22
23
|
export * from './radio-group';
|
|
23
|
-
export * from './slider';
|
|
24
24
|
export * from './scope-buttons';
|
|
25
25
|
export * from './search-input';
|
|
26
26
|
export * from './secret';
|
|
27
27
|
export * from './segmented-control';
|
|
28
28
|
export * from './select';
|
|
29
|
+
export * from './slider';
|
|
29
30
|
export * from './spinner';
|
|
30
31
|
export * from './svg-icon';
|
|
31
32
|
export * from './switch';
|
|
@@ -34,5 +35,6 @@ export * from './tag';
|
|
|
34
35
|
export * from './text-input';
|
|
35
36
|
export * from './textarea';
|
|
36
37
|
export * from './toast';
|
|
38
|
+
export * from './toaster';
|
|
37
39
|
export * from './tooltip';
|
|
38
40
|
export * from './vertical-navigation';
|
package/components/index.js
CHANGED
|
@@ -18,6 +18,7 @@ __exportStar(require("./breadcrumbs"), exports);
|
|
|
18
18
|
__exportStar(require("./button"), exports);
|
|
19
19
|
__exportStar(require("./buttons-group"), exports);
|
|
20
20
|
__exportStar(require("./checkbox"), exports);
|
|
21
|
+
__exportStar(require("./date-picker"), exports);
|
|
21
22
|
__exportStar(require("./datetime-input"), exports);
|
|
22
23
|
__exportStar(require("./dialog"), exports);
|
|
23
24
|
__exportStar(require("./form-field"), exports);
|
|
@@ -25,19 +26,19 @@ __exportStar(require("./formatted-content"), exports);
|
|
|
25
26
|
__exportStar(require("./inline-message"), exports);
|
|
26
27
|
__exportStar(require("./label"), exports);
|
|
27
28
|
__exportStar(require("./loading-view"), exports);
|
|
28
|
-
__exportStar(require("./number-input"), exports);
|
|
29
29
|
__exportStar(require("./non-ideal-state-view"), exports);
|
|
30
|
+
__exportStar(require("./number-input"), exports);
|
|
30
31
|
__exportStar(require("./password-input"), exports);
|
|
31
32
|
__exportStar(require("./popover"), exports);
|
|
32
33
|
__exportStar(require("./portal"), exports);
|
|
33
34
|
__exportStar(require("./radio-button"), exports);
|
|
34
35
|
__exportStar(require("./radio-group"), exports);
|
|
35
|
-
__exportStar(require("./slider"), exports);
|
|
36
36
|
__exportStar(require("./scope-buttons"), exports);
|
|
37
37
|
__exportStar(require("./search-input"), exports);
|
|
38
38
|
__exportStar(require("./secret"), exports);
|
|
39
39
|
__exportStar(require("./segmented-control"), exports);
|
|
40
40
|
__exportStar(require("./select"), exports);
|
|
41
|
+
__exportStar(require("./slider"), exports);
|
|
41
42
|
__exportStar(require("./spinner"), exports);
|
|
42
43
|
__exportStar(require("./svg-icon"), exports);
|
|
43
44
|
__exportStar(require("./switch"), exports);
|
|
@@ -46,6 +47,7 @@ __exportStar(require("./tag"), exports);
|
|
|
46
47
|
__exportStar(require("./text-input"), exports);
|
|
47
48
|
__exportStar(require("./textarea"), exports);
|
|
48
49
|
__exportStar(require("./toast"), exports);
|
|
50
|
+
__exportStar(require("./toaster"), exports);
|
|
49
51
|
__exportStar(require("./tooltip"), exports);
|
|
50
52
|
__exportStar(require("./vertical-navigation"), exports);
|
|
51
53
|
//# sourceMappingURL=index.js.map
|
package/components/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/components/index.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,kDAAgC;AAChC,0CAAwB;AACxB,2CAAyB;AACzB,wCAAsB;AACtB,gDAA8B;AAC9B,2CAAyB;AACzB,kDAAgC;AAChC,6CAA2B;AAC3B,mDAAiC;AACjC,2CAAyB;AACzB,+CAA6B;AAC7B,sDAAoC;AACpC,mDAAiC;AACjC,0CAAwB;AACxB,iDAA+B;AAC/B,iDAA+B;AAC/B,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/components/index.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,kDAAgC;AAChC,0CAAwB;AACxB,2CAAyB;AACzB,wCAAsB;AACtB,gDAA8B;AAC9B,2CAAyB;AACzB,kDAAgC;AAChC,6CAA2B;AAC3B,gDAA8B;AAC9B,mDAAiC;AACjC,2CAAyB;AACzB,+CAA6B;AAC7B,sDAAoC;AACpC,mDAAiC;AACjC,0CAAwB;AACxB,iDAA+B;AAC/B,yDAAuC;AACvC,iDAA+B;AAC/B,mDAAiC;AACjC,4CAA0B;AAC1B,2CAAyB;AACzB,iDAA+B;AAC/B,gDAA8B;AAC9B,kDAAgC;AAChC,iDAA+B;AAC/B,2CAAyB;AACzB,sDAAoC;AACpC,2CAAyB;AACzB,2CAAyB;AACzB,4CAA0B;AAC1B,6CAA2B;AAC3B,2CAAyB;AACzB,0CAAwB;AACxB,wCAAsB;AACtB,+CAA6B;AAC7B,6CAA2B;AAC3B,0CAAwB;AACxB,4CAA0B;AAC1B,4CAA0B;AAC1B,wDAAsC"}
|
|
@@ -10,7 +10,7 @@ const exclamation_circle_1 = require("../../icons/exclamation-circle");
|
|
|
10
10
|
const info_circle_1 = require("../../icons/info-circle");
|
|
11
11
|
const check_circle_1 = require("../../icons/check-circle");
|
|
12
12
|
function NonIdealStateView({ spacing = '2xl', icon, heading, description, actions, className, children, ...props }) {
|
|
13
|
-
return (jsx_runtime_1.jsx("section", Object.assign({}, props, { className: react_helpers_1.classNames(className, 'dc-non-ideal-state', `dc-non-ideal-state_spacing_${spacing}`) }, { children: jsx_runtime_1.jsxs("div", Object.assign({ className: "dc-non-ideal-state__body" }, { children: [icon && getIcon(icon), jsx_runtime_1.jsx("h2", Object.assign({ className: formatted_content_1.FormattedContent.CSSClasses.
|
|
13
|
+
return (jsx_runtime_1.jsx("section", Object.assign({}, props, { className: react_helpers_1.classNames(className, 'dc-non-ideal-state', `dc-non-ideal-state_spacing_${spacing}`) }, { children: jsx_runtime_1.jsxs("div", Object.assign({ className: "dc-non-ideal-state__body" }, { children: [icon && getIcon(icon), jsx_runtime_1.jsx("h2", Object.assign({ className: formatted_content_1.FormattedContent.CSSClasses.headline }, { children: heading }), void 0), description && (jsx_runtime_1.jsx("div", Object.assign({ className: react_helpers_1.classNames('dc-non-ideal-state__description', formatted_content_1.FormattedContent.CSSClasses.paragraph) }, { children: description }), void 0)), actions && (jsx_runtime_1.jsx("div", Object.assign({ className: "dc-non-ideal-state__actions" }, { children: actions }), void 0)), children && (jsx_runtime_1.jsx("div", Object.assign({ className: react_helpers_1.classNames('dc-non-ideal-state__content', formatted_content_1.FormattedContent.CSSClasses.subheadline) }, { children: children }), void 0))] }), void 0) }), void 0));
|
|
14
14
|
}
|
|
15
15
|
exports.NonIdealStateView = NonIdealStateView;
|
|
16
16
|
function getIcon(icon) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"non-ideal-state-view.js","sourceRoot":"","sources":["../../src/components/non-ideal-state-view/non-ideal-state-view.tsx"],"names":[],"mappings":";;;;AACA,2DAAqD;AACrD,4DAAwD;AACxD,0CAAsC;AACtC,2EAAuE;AACvE,uEAAmE;AACnE,yDAAqD;AACrD,2DAAuD;AAWvD,SAAgB,iBAAiB,CAAC,EAChC,OAAO,GAAG,KAAK,EACf,IAAI,EACJ,OAAO,EACP,WAAW,EACX,OAAO,EACP,SAAS,EACT,QAAQ,EACR,GAAG,KAAK,EACe;IACvB,OAAO,CACL,+CACM,KAAK,IACT,SAAS,EAAE,0BAAU,CACnB,SAAS,EACT,oBAAoB,EACpB,8BAA8B,OAAO,EAAE,CACxC,gBAED,0CAAK,SAAS,EAAC,0BAA0B,iBACtC,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,EAEtB,wCAAI,SAAS,EAAE,oCAAgB,CAAC,UAAU,CAAC,
|
|
1
|
+
{"version":3,"file":"non-ideal-state-view.js","sourceRoot":"","sources":["../../src/components/non-ideal-state-view/non-ideal-state-view.tsx"],"names":[],"mappings":";;;;AACA,2DAAqD;AACrD,4DAAwD;AACxD,0CAAsC;AACtC,2EAAuE;AACvE,uEAAmE;AACnE,yDAAqD;AACrD,2DAAuD;AAWvD,SAAgB,iBAAiB,CAAC,EAChC,OAAO,GAAG,KAAK,EACf,IAAI,EACJ,OAAO,EACP,WAAW,EACX,OAAO,EACP,SAAS,EACT,QAAQ,EACR,GAAG,KAAK,EACe;IACvB,OAAO,CACL,+CACM,KAAK,IACT,SAAS,EAAE,0BAAU,CACnB,SAAS,EACT,oBAAoB,EACpB,8BAA8B,OAAO,EAAE,CACxC,gBAED,0CAAK,SAAS,EAAC,0BAA0B,iBACtC,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,EAEtB,wCAAI,SAAS,EAAE,oCAAgB,CAAC,UAAU,CAAC,QAAQ,gBAAG,OAAO,YAAM,EAElE,WAAW,IAAI,CACd,yCAAK,SAAS,EAAE,0BAAU,CACxB,iCAAiC,EACjC,oCAAgB,CAAC,UAAU,CAAC,SAAS,CACtC,gBACE,WAAW,YACR,CACP,EAEA,OAAO,IAAI,CACV,yCAAK,SAAS,EAAC,6BAA6B,gBAAE,OAAO,YAAO,CAC7D,EAEA,QAAQ,IAAI,CACX,yCAAK,SAAS,EAAE,0BAAU,CACxB,6BAA6B,EAC7B,oCAAgB,CAAC,UAAU,CAAC,WAAW,CACxC,gBACE,QAAQ,YACL,CACP,aACG,YACE,CACX,CAAC;AACJ,CAAC;AAhDD,8CAgDC;AAED,SAAS,OAAO,CACd,IAAiD;IAEjD,IAAI,QAAQ,GAAG,EAAE,CAAC;IAClB,IAAI,YAAyB,CAAC;IAE9B,QAAQ,IAAI,EAAE;QACZ,KAAK,OAAO;YACV,QAAQ,GAAG,8BAA8B,CAAC;YAC1C,YAAY,GAAG,kBAAC,kBAAO,IAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAE,sCAAiB,WAAI,CAAC;YAC9D,MAAM;QACR,KAAK,SAAS;YACZ,QAAQ,GAAG,iCAAiC,CAAC;YAC7C,YAAY,GAAG,kBAAC,kBAAO,IAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAE,0CAAmB,WAAI,CAAC;YAChE,MAAM;QACR,KAAK,MAAM;YACT,QAAQ,GAAG,+BAA+B,CAAC;YAC3C,YAAY,GAAG,kBAAC,kBAAO,IAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAE,wBAAU,WAAI,CAAC;YACvD,MAAM;QACR,KAAK,SAAS;YACZ,QAAQ,GAAG,gCAAgC,CAAC;YAC5C,YAAY,GAAG,kBAAC,kBAAO,IAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAE,0BAAW,WAAI,CAAC;YACxD,MAAM;QACR;YACE,YAAY,GAAG,IAAI,CAAC;KACvB;IAED,OAAO,CACL,yCAAK,SAAS,EAAE,0BAAU,CAAC,0BAA0B,EAAE,QAAQ,CAAC,gBAC7D,YAAY,YACT,CACP,CAAC;AACJ,CAAC"}
|
|
@@ -1,17 +1,14 @@
|
|
|
1
1
|
import { ComponentPropsWithRef, ReactNode } from 'react';
|
|
2
|
-
interface BaseToastProps extends ComponentPropsWithRef<'
|
|
2
|
+
interface BaseToastProps extends ComponentPropsWithRef<'div'> {
|
|
3
3
|
appearance?: 'warning' | 'error' | 'info' | 'success';
|
|
4
4
|
fullWidth?: boolean;
|
|
5
5
|
icon?: ReactNode;
|
|
6
6
|
}
|
|
7
|
-
export
|
|
8
|
-
heading: ReactNode;
|
|
9
|
-
message?: ReactNode;
|
|
10
|
-
} | {
|
|
11
|
-
heading?: ReactNode;
|
|
7
|
+
export interface ToastProps extends BaseToastProps {
|
|
12
8
|
message: ReactNode;
|
|
13
|
-
|
|
14
|
-
|
|
9
|
+
informativeText?: ReactNode;
|
|
10
|
+
}
|
|
11
|
+
export declare function Toast({ appearance, fullWidth, icon, message, informativeText, className, children: buttons, ...props }: ToastProps): JSX.Element;
|
|
15
12
|
export declare namespace Toast {
|
|
16
13
|
var Button: import("react").ForwardRefExoticComponent<Pick<import("./toast-button").ToastButtonProps, "form" | "slot" | "style" | "title" | "className" | "color" | "id" | "lang" | "name" | "type" | "role" | "tabIndex" | "aria-activedescendant" | "aria-atomic" | "aria-autocomplete" | "aria-busy" | "aria-checked" | "aria-colcount" | "aria-colindex" | "aria-colspan" | "aria-controls" | "aria-current" | "aria-describedby" | "aria-details" | "aria-disabled" | "aria-dropeffect" | "aria-errormessage" | "aria-expanded" | "aria-flowto" | "aria-grabbed" | "aria-haspopup" | "aria-hidden" | "aria-invalid" | "aria-keyshortcuts" | "aria-label" | "aria-labelledby" | "aria-level" | "aria-live" | "aria-modal" | "aria-multiline" | "aria-multiselectable" | "aria-orientation" | "aria-owns" | "aria-placeholder" | "aria-posinset" | "aria-pressed" | "aria-readonly" | "aria-relevant" | "aria-required" | "aria-roledescription" | "aria-rowcount" | "aria-rowindex" | "aria-rowspan" | "aria-selected" | "aria-setsize" | "aria-sort" | "aria-valuemax" | "aria-valuemin" | "aria-valuenow" | "aria-valuetext" | "children" | "dangerouslySetInnerHTML" | "onCopy" | "onCopyCapture" | "onCut" | "onCutCapture" | "onPaste" | "onPasteCapture" | "onCompositionEnd" | "onCompositionEndCapture" | "onCompositionStart" | "onCompositionStartCapture" | "onCompositionUpdate" | "onCompositionUpdateCapture" | "onFocus" | "onFocusCapture" | "onBlur" | "onBlurCapture" | "onChange" | "onChangeCapture" | "onBeforeInput" | "onBeforeInputCapture" | "onInput" | "onInputCapture" | "onReset" | "onResetCapture" | "onSubmit" | "onSubmitCapture" | "onInvalid" | "onInvalidCapture" | "onLoad" | "onLoadCapture" | "onError" | "onErrorCapture" | "onKeyDown" | "onKeyDownCapture" | "onKeyPress" | "onKeyPressCapture" | "onKeyUp" | "onKeyUpCapture" | "onAbort" | "onAbortCapture" | "onCanPlay" | "onCanPlayCapture" | "onCanPlayThrough" | "onCanPlayThroughCapture" | "onDurationChange" | "onDurationChangeCapture" | "onEmptied" | "onEmptiedCapture" | "onEncrypted" | "onEncryptedCapture" | "onEnded" | "onEndedCapture" | "onLoadedData" | "onLoadedDataCapture" | "onLoadedMetadata" | "onLoadedMetadataCapture" | "onLoadStart" | "onLoadStartCapture" | "onPause" | "onPauseCapture" | "onPlay" | "onPlayCapture" | "onPlaying" | "onPlayingCapture" | "onProgress" | "onProgressCapture" | "onRateChange" | "onRateChangeCapture" | "onSeeked" | "onSeekedCapture" | "onSeeking" | "onSeekingCapture" | "onStalled" | "onStalledCapture" | "onSuspend" | "onSuspendCapture" | "onTimeUpdate" | "onTimeUpdateCapture" | "onVolumeChange" | "onVolumeChangeCapture" | "onWaiting" | "onWaitingCapture" | "onAuxClick" | "onAuxClickCapture" | "onClick" | "onClickCapture" | "onContextMenu" | "onContextMenuCapture" | "onDoubleClick" | "onDoubleClickCapture" | "onDrag" | "onDragCapture" | "onDragEnd" | "onDragEndCapture" | "onDragEnter" | "onDragEnterCapture" | "onDragExit" | "onDragExitCapture" | "onDragLeave" | "onDragLeaveCapture" | "onDragOver" | "onDragOverCapture" | "onDragStart" | "onDragStartCapture" | "onDrop" | "onDropCapture" | "onMouseDown" | "onMouseDownCapture" | "onMouseEnter" | "onMouseLeave" | "onMouseMove" | "onMouseMoveCapture" | "onMouseOut" | "onMouseOutCapture" | "onMouseOver" | "onMouseOverCapture" | "onMouseUp" | "onMouseUpCapture" | "onSelect" | "onSelectCapture" | "onTouchCancel" | "onTouchCancelCapture" | "onTouchEnd" | "onTouchEndCapture" | "onTouchMove" | "onTouchMoveCapture" | "onTouchStart" | "onTouchStartCapture" | "onPointerDown" | "onPointerDownCapture" | "onPointerMove" | "onPointerMoveCapture" | "onPointerUp" | "onPointerUpCapture" | "onPointerCancel" | "onPointerCancelCapture" | "onPointerEnter" | "onPointerEnterCapture" | "onPointerLeave" | "onPointerLeaveCapture" | "onPointerOver" | "onPointerOverCapture" | "onPointerOut" | "onPointerOutCapture" | "onGotPointerCapture" | "onGotPointerCaptureCapture" | "onLostPointerCapture" | "onLostPointerCaptureCapture" | "onScroll" | "onScrollCapture" | "onWheel" | "onWheelCapture" | "onAnimationStart" | "onAnimationStartCapture" | "onAnimationEnd" | "onAnimationEndCapture" | "onAnimationIteration" | "onAnimationIterationCapture" | "onTransitionEnd" | "onTransitionEndCapture" | "key" | "hidden" | "disabled" | "autoFocus" | "formAction" | "formEncType" | "formMethod" | "formNoValidate" | "formTarget" | "value" | "defaultChecked" | "defaultValue" | "suppressContentEditableWarning" | "suppressHydrationWarning" | "accessKey" | "contentEditable" | "contextMenu" | "dir" | "draggable" | "placeholder" | "spellCheck" | "translate" | "radioGroup" | "about" | "datatype" | "inlist" | "prefix" | "property" | "resource" | "typeof" | "vocab" | "autoCapitalize" | "autoCorrect" | "autoSave" | "itemProp" | "itemScope" | "itemType" | "itemID" | "itemRef" | "results" | "security" | "unselectable" | "inputMode" | "is"> & import("react").RefAttributes<HTMLButtonElement>>;
|
|
17
14
|
}
|
|
@@ -15,14 +15,14 @@ const defaultIcons = {
|
|
|
15
15
|
warning: exclamation_triangle_fill_1.exclamationTriangleFill,
|
|
16
16
|
error: exclamation_circle_fill_1.exclamationCircleFill,
|
|
17
17
|
};
|
|
18
|
-
function Toast({ appearance, fullWidth, icon,
|
|
18
|
+
function Toast({ appearance, fullWidth, icon, message, informativeText, className, children: buttons, ...props }) {
|
|
19
19
|
if (!icon && appearance) {
|
|
20
20
|
icon = jsx_runtime_1.jsx(svg_icon_1.SvgIcon, { icon: defaultIcons[appearance], size: "1.15em" }, void 0);
|
|
21
21
|
}
|
|
22
|
-
return (jsx_runtime_1.jsxs("
|
|
22
|
+
return (jsx_runtime_1.jsxs("div", Object.assign({}, props, { className: react_helpers_1.classNames(className, 'dc-toast', {
|
|
23
23
|
'dc-toast_full-width': fullWidth,
|
|
24
24
|
[`dc-toast_appearance_${appearance}`]: appearance,
|
|
25
|
-
}) }, { children: [jsx_runtime_1.jsxs("div", Object.assign({ className: "dc-toast__body" }, { children: [icon && jsx_runtime_1.jsx("div", Object.assign({ className: "dc-toast__icon" }, { children: icon }), void 0), jsx_runtime_1.jsxs("div", Object.assign({ className: "dc-toast__content" }, { children: [
|
|
25
|
+
}) }, { children: [jsx_runtime_1.jsxs("div", Object.assign({ className: "dc-toast__body" }, { children: [icon && jsx_runtime_1.jsx("div", Object.assign({ className: "dc-toast__icon" }, { children: icon }), void 0), jsx_runtime_1.jsxs("div", Object.assign({ className: "dc-toast__content" }, { children: [message && jsx_runtime_1.jsx("h3", Object.assign({ className: "dc-toast__message" }, { children: message }), void 0), informativeText && (jsx_runtime_1.jsx("p", Object.assign({ className: "dc-toast__informative-text" }, { children: informativeText }), void 0))] }), void 0)] }), void 0), buttons && jsx_runtime_1.jsx("div", Object.assign({ className: "dc-toast__btns" }, { children: buttons }), void 0)] }), void 0));
|
|
26
26
|
}
|
|
27
27
|
exports.Toast = Toast;
|
|
28
28
|
Toast.Button = toast_button_1.ToastButton;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"toast.js","sourceRoot":"","sources":["../../src/components/toast/toast.tsx"],"names":[],"mappings":";;;;AACA,2DAAqD;AACrD,0CAAsC;AACtC,iDAA6C;AAC7C,iFAA4E;AAC5E,qFAAgF;AAChF,qEAAgE;AAChE,mEAA8D;
|
|
1
|
+
{"version":3,"file":"toast.js","sourceRoot":"","sources":["../../src/components/toast/toast.tsx"],"names":[],"mappings":";;;;AACA,2DAAqD;AACrD,0CAAsC;AACtC,iDAA6C;AAC7C,iFAA4E;AAC5E,qFAAgF;AAChF,qEAAgE;AAChE,mEAA8D;AAa9D,MAAM,YAAY,GAAG;IACnB,IAAI,EAAE,iCAAc;IACpB,OAAO,EAAE,mCAAe;IACxB,OAAO,EAAE,mDAAuB;IAChC,KAAK,EAAE,+CAAqB;CAC7B,CAAC;AAEF,SAAgB,KAAK,CAAC,EACpB,UAAU,EACV,SAAS,EACT,IAAI,EACJ,OAAO,EACP,eAAe,EACf,SAAS,EACT,QAAQ,EAAE,OAAO,EACjB,GAAG,KAAK,EACG;IACX,IAAI,CAAC,IAAI,IAAI,UAAU,EAAE;QACvB,IAAI,GAAG,kBAAC,kBAAO,IAAC,IAAI,EAAE,YAAY,CAAC,UAAU,CAAC,EAAE,IAAI,EAAC,QAAQ,WAAG,CAAC;KAClE;IAED,OAAO,CACL,4CACM,KAAK,IACT,SAAS,EAAE,0BAAU,CAAC,SAAS,EAAE,UAAU,EAAE;YAC3C,qBAAqB,EAAE,SAAS;YAChC,CAAC,uBAAuB,UAAU,EAAE,CAAC,EAAE,UAAU;SAClD,CAAC,iBAEF,0CAAK,SAAS,EAAC,gBAAgB,iBAC5B,IAAI,IAAI,yCAAK,SAAS,EAAC,gBAAgB,gBAAE,IAAI,YAAO,EACrD,0CAAK,SAAS,EAAC,mBAAmB,iBAC/B,OAAO,IAAI,wCAAI,SAAS,EAAC,mBAAmB,gBAAE,OAAO,YAAM,EAC3D,eAAe,IAAI,CAClB,uCAAG,SAAS,EAAC,4BAA4B,gBAAE,eAAe,YAAK,CAChE,aACG,aACF,EAEL,OAAO,IAAI,yCAAK,SAAS,EAAC,gBAAgB,gBAAE,OAAO,YAAO,aACvD,CACP,CAAC;AACJ,CAAC;AAnCD,sBAmCC;AAED,KAAK,CAAC,MAAM,GAAG,0BAAW,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './toaster';
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
|
|
5
|
+
}) : (function(o, m, k, k2) {
|
|
6
|
+
if (k2 === undefined) k2 = k;
|
|
7
|
+
o[k2] = m[k];
|
|
8
|
+
}));
|
|
9
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
10
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
11
|
+
};
|
|
12
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
13
|
+
__exportStar(require("./toaster"), exports);
|
|
14
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/components/toaster/index.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,4CAA0B"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { ComponentPropsWithoutRef } from 'react';
|
|
2
|
+
import { ToastId, ToastRenderFn } from './use-toasts';
|
|
3
|
+
declare type ToasterVerticalPosition = 'top' | 'bottom';
|
|
4
|
+
declare type ToasterHorizontalPosition = 'left' | 'center' | 'right';
|
|
5
|
+
declare type ToasterPosition = `${ToasterVerticalPosition}-${ToasterHorizontalPosition}`;
|
|
6
|
+
export interface ToasterProps extends ComponentPropsWithoutRef<'ul'> {
|
|
7
|
+
position?: ToasterPosition;
|
|
8
|
+
toastGap?: number;
|
|
9
|
+
}
|
|
10
|
+
export declare function Toaster({ className, position, toastGap, ...props }: ToasterProps): JSX.Element;
|
|
11
|
+
export declare namespace Toaster {
|
|
12
|
+
var dismiss: typeof dismissToast;
|
|
13
|
+
var show: typeof showToast;
|
|
14
|
+
}
|
|
15
|
+
export declare function dismissToast(toastId: ToastId): void;
|
|
16
|
+
export declare function showToast(renderToast: ToastRenderFn, durationMs?: number): ToastId;
|
|
17
|
+
export {};
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.showToast = exports.dismissToast = exports.Toaster = void 0;
|
|
4
|
+
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
5
|
+
const react_1 = require("react");
|
|
6
|
+
const use_toasts_1 = require("./use-toasts");
|
|
7
|
+
const react_helpers_1 = require("../../lib/react-helpers");
|
|
8
|
+
let isToasterRendered = false;
|
|
9
|
+
const toastTimeouts = new Map();
|
|
10
|
+
function Toaster({ className, position = 'top-center', toastGap = 16, ...props }) {
|
|
11
|
+
const ref = react_1.useRef(null);
|
|
12
|
+
const toasts = use_toasts_1.useToasts();
|
|
13
|
+
react_1.useEffect(() => {
|
|
14
|
+
const listElement = ref.current;
|
|
15
|
+
if (!listElement) {
|
|
16
|
+
return;
|
|
17
|
+
}
|
|
18
|
+
const toastAppearsOnBottom = position === null || position === void 0 ? void 0 : position.startsWith('bottom');
|
|
19
|
+
const items = listElement.children;
|
|
20
|
+
let offset = 0;
|
|
21
|
+
for (let i = 0; i < items.length; i += 1) {
|
|
22
|
+
const item = items[i];
|
|
23
|
+
if (item instanceof HTMLElement) {
|
|
24
|
+
item.style.transform = `translateY(${offset}px)`;
|
|
25
|
+
const d = item.clientHeight + toastGap;
|
|
26
|
+
if (toastAppearsOnBottom) {
|
|
27
|
+
offset -= d;
|
|
28
|
+
}
|
|
29
|
+
else {
|
|
30
|
+
offset += d;
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
}, [toasts, toastGap, position]);
|
|
35
|
+
react_1.useEffect(() => {
|
|
36
|
+
isToasterRendered = true;
|
|
37
|
+
return () => {
|
|
38
|
+
isToasterRendered = false;
|
|
39
|
+
for (const toastId of toastTimeouts.keys()) {
|
|
40
|
+
dismissToast(toastId);
|
|
41
|
+
}
|
|
42
|
+
};
|
|
43
|
+
}, []);
|
|
44
|
+
return (jsx_runtime_1.jsx("ul", Object.assign({}, props, { ref: ref, className: react_helpers_1.classNames(className, 'toaster', `toaster_position_${position}`) }, { children: toasts.map((toast) => (jsx_runtime_1.jsx("li", { children: toast.render({
|
|
45
|
+
toastId: toast.id,
|
|
46
|
+
className: 'toaster__item',
|
|
47
|
+
dismiss: () => dismissToast(toast.id),
|
|
48
|
+
}) }, toast.id))) }), void 0));
|
|
49
|
+
}
|
|
50
|
+
exports.Toaster = Toaster;
|
|
51
|
+
function dismissToast(toastId) {
|
|
52
|
+
const timeoutId = toastTimeouts.get(toastId);
|
|
53
|
+
if (timeoutId) {
|
|
54
|
+
window.clearTimeout(timeoutId);
|
|
55
|
+
}
|
|
56
|
+
toastTimeouts.delete(toastId);
|
|
57
|
+
use_toasts_1.dispatch({ type: 'DELETE_TOAST', toastId });
|
|
58
|
+
}
|
|
59
|
+
exports.dismissToast = dismissToast;
|
|
60
|
+
function showToast(renderToast, durationMs = 1e4) {
|
|
61
|
+
if (!isToasterRendered) {
|
|
62
|
+
throw new Error('To show toast put <Toatser /> component somewhere on the page.');
|
|
63
|
+
}
|
|
64
|
+
const toast = use_toasts_1.createToast(renderToast);
|
|
65
|
+
const toastId = toast.id;
|
|
66
|
+
if (durationMs) {
|
|
67
|
+
const timeoutId = window.setTimeout(() => {
|
|
68
|
+
dismissToast(toastId);
|
|
69
|
+
}, durationMs);
|
|
70
|
+
toastTimeouts.set(toastId, timeoutId);
|
|
71
|
+
}
|
|
72
|
+
use_toasts_1.dispatch({ type: 'CREATE_TOAST', toast });
|
|
73
|
+
return toastId;
|
|
74
|
+
}
|
|
75
|
+
exports.showToast = showToast;
|
|
76
|
+
Toaster.dismiss = dismissToast;
|
|
77
|
+
Toaster.show = showToast;
|
|
78
|
+
//# sourceMappingURL=toaster.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"toaster.js","sourceRoot":"","sources":["../../src/components/toaster/toaster.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
/// <reference types="react" />
|
|
2
|
+
export declare type ToastId = string;
|
|
3
|
+
export declare type ToastRenderFn = (props: {
|
|
4
|
+
toastId: ToastId;
|
|
5
|
+
className: string;
|
|
6
|
+
dismiss(): void;
|
|
7
|
+
}) => JSX.Element;
|
|
8
|
+
declare type Toast = {
|
|
9
|
+
id: ToastId;
|
|
10
|
+
render: ToastRenderFn;
|
|
11
|
+
};
|
|
12
|
+
declare type Action = {
|
|
13
|
+
type: 'CREATE_TOAST';
|
|
14
|
+
toast: Toast;
|
|
15
|
+
} | {
|
|
16
|
+
type: 'DELETE_TOAST';
|
|
17
|
+
toastId: ToastId;
|
|
18
|
+
};
|
|
19
|
+
export declare function dispatch(action: Action): void;
|
|
20
|
+
export declare function createToast(renderToast: ToastRenderFn): Toast;
|
|
21
|
+
export declare function useToasts(): Toast[];
|
|
22
|
+
export {};
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.useToasts = exports.createToast = exports.dispatch = void 0;
|
|
4
|
+
const react_1 = require("react");
|
|
5
|
+
const util_1 = require("../../lib/util");
|
|
6
|
+
const MAX_TOASTS = 8;
|
|
7
|
+
function reducer(toasts, action) {
|
|
8
|
+
switch (action.type) {
|
|
9
|
+
case 'CREATE_TOAST':
|
|
10
|
+
return [action.toast, ...toasts].slice(0, MAX_TOASTS);
|
|
11
|
+
case 'DELETE_TOAST':
|
|
12
|
+
return toasts.filter(toast => toast.id !== action.toastId);
|
|
13
|
+
default:
|
|
14
|
+
return toasts;
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
let listeners = [];
|
|
18
|
+
let toasts = [];
|
|
19
|
+
function dispatch(action) {
|
|
20
|
+
toasts = reducer(toasts, action);
|
|
21
|
+
listeners.forEach(listener => listener(toasts));
|
|
22
|
+
}
|
|
23
|
+
exports.dispatch = dispatch;
|
|
24
|
+
function createToast(renderToast) {
|
|
25
|
+
return { id: util_1.uniqueId('toast-'), render: renderToast };
|
|
26
|
+
}
|
|
27
|
+
exports.createToast = createToast;
|
|
28
|
+
function useToasts() {
|
|
29
|
+
const [toasts, setToasts] = react_1.useState([]);
|
|
30
|
+
react_1.useEffect(() => {
|
|
31
|
+
listeners.push(setToasts);
|
|
32
|
+
return () => {
|
|
33
|
+
const index = listeners.findIndex(listener => listener === setToasts);
|
|
34
|
+
if (~index) {
|
|
35
|
+
listeners.splice(index, 1);
|
|
36
|
+
}
|
|
37
|
+
};
|
|
38
|
+
}, []);
|
|
39
|
+
return toasts;
|
|
40
|
+
}
|
|
41
|
+
exports.useToasts = useToasts;
|
|
42
|
+
//# sourceMappingURL=use-toasts.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"use-toasts.js","sourceRoot":"","sources":["../../src/components/toaster/use-toasts.ts"],"names":[],"mappings":";;;AAAA,iCAA4C;AAC5C,yCAA0C;AAE1C,MAAM,UAAU,GAAG,CAAC,CAAC;AAmBrB,SAAS,OAAO,CAAC,MAAe,EAAE,MAAc;IAC9C,QAAQ,MAAM,CAAC,IAAI,EAAE;QACnB,KAAK,cAAc;YACjB,OAAO,CAAC,MAAM,CAAC,KAAK,EAAE,GAAG,MAAM,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC;QACxD,KAAK,cAAc;YACjB,OAAO,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,KAAK,MAAM,CAAC,OAAO,CAAC,CAAC;QAC7D;YACE,OAAO,MAAM,CAAC;KACjB;AACH,CAAC;AAED,IAAI,SAAS,GAA2C,EAAE,CAAC;AAC3D,IAAI,MAAM,GAAY,EAAE,CAAC;AAEzB,SAAgB,QAAQ,CAAC,MAAc;IACrC,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,SAAS,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC;AAClD,CAAC;AAHD,4BAGC;AAED,SAAgB,WAAW,CAAC,WAA0B;IACpD,OAAO,EAAE,EAAE,EAAE,eAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,EAAE,WAAW,EAAE,CAAC;AACzD,CAAC;AAFD,kCAEC;AAED,SAAgB,SAAS;IACvB,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,gBAAQ,CAAU,EAAE,CAAC,CAAC;IAElD,iBAAS,CAAC,GAAG,EAAE;QACb,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAC1B,OAAO,GAAG,EAAE;YACV,MAAM,KAAK,GAAG,SAAS,CAAC,SAAS,CAAC,QAAQ,CAAC,EAAE,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC;YACtE,IAAI,CAAC,KAAK,EAAE;gBACV,SAAS,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;aAC5B;QACH,CAAC,CAAC;IACJ,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,OAAO,MAAM,CAAC;AAChB,CAAC;AAdD,8BAcC"}
|