@frontify/guideline-blocks-settings 0.28.4 → 0.28.5
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/CHANGELOG.md +9 -0
- package/dist/components/Attachments/Attachments.es.js +55 -55
- package/dist/components/Attachments/Attachments.es.js.map +1 -1
- package/dist/components/BlockItemWrapper/Toolbar.es.js +1 -1
- package/dist/components/BlockItemWrapper/Toolbar.es.js.map +1 -1
- package/dist/components/DownloadButton/DownloadButton.es.js +3 -3
- package/dist/components/DownloadButton/DownloadButton.es.js.map +1 -1
- package/dist/components/Link/LinkInput.es.js +61 -0
- package/dist/components/Link/LinkInput.es.js.map +1 -0
- package/dist/components/Link/LinkSelector/DocumentLink.es.js.map +1 -0
- package/dist/components/Link/LinkSelector/DocumentLinks.es.js.map +1 -0
- package/dist/components/Link/LinkSelector/LinkSelector.es.js +67 -0
- package/dist/components/Link/LinkSelector/LinkSelector.es.js.map +1 -0
- package/dist/components/Link/LinkSelector/PageLink.es.js.map +1 -0
- package/dist/components/Link/LinkSelector/PageLinks.es.js +37 -0
- package/dist/components/Link/LinkSelector/PageLinks.es.js.map +1 -0
- package/dist/components/Link/LinkSelector/SectionLink.es.js.map +1 -0
- package/dist/components/Link/utils/getUrl.es.js +17 -0
- package/dist/components/Link/utils/getUrl.es.js.map +1 -0
- package/dist/components/Link/utils/relativeUrlRegex.es.js.map +1 -0
- package/dist/components/{RichTextEditor/plugins/LinkPlugin → Link}/utils/url.es.js +1 -1
- package/dist/components/Link/utils/url.es.js.map +1 -0
- package/dist/components/RichTextEditor/plugins/ButtonPlugin/components/FloatingButton/InsertButtonModal/useInsertModal.es.js +1 -1
- package/dist/components/RichTextEditor/plugins/ButtonPlugin/components/FloatingButton/InsertButtonModal/useInsertModal.es.js.map +1 -1
- package/dist/components/RichTextEditor/plugins/ButtonPlugin/createButtonPlugin.es.js +1 -1
- package/dist/components/RichTextEditor/plugins/ButtonPlugin/createButtonPlugin.es.js.map +1 -1
- package/dist/components/RichTextEditor/plugins/LinkPlugin/FloatingLink/EditLinkModal/useFloatingLinkEdit.es.js +1 -1
- package/dist/components/RichTextEditor/plugins/LinkPlugin/FloatingLink/EditLinkModal/useFloatingLinkEdit.es.js.map +1 -1
- package/dist/components/RichTextEditor/plugins/LinkPlugin/FloatingLink/InsertLinkModal/InsertModal.es.js +39 -53
- package/dist/components/RichTextEditor/plugins/LinkPlugin/FloatingLink/InsertLinkModal/InsertModal.es.js.map +1 -1
- package/dist/components/RichTextEditor/plugins/LinkPlugin/FloatingLink/InsertLinkModal/useInsertModal.es.js +2 -2
- package/dist/components/RichTextEditor/plugins/LinkPlugin/FloatingLink/InsertLinkModal/useInsertModal.es.js.map +1 -1
- package/dist/components/RichTextEditor/plugins/LinkPlugin/index.es.js +1 -1
- package/dist/components/RichTextEditor/plugins/LinkPlugin/index.es.js.map +1 -1
- package/dist/helpers/addHttps.es.js +1 -1
- package/dist/helpers/addHttps.es.js.map +1 -1
- package/dist/index.cjs.js +8 -8
- package/dist/index.cjs.js.map +1 -1
- package/dist/index.d.ts +60 -0
- package/dist/index.es.js +134 -121
- package/dist/index.es.js.map +1 -1
- package/dist/index.umd.js +8 -8
- package/dist/index.umd.js.map +1 -1
- package/dist/styles.css +1 -1
- package/package.json +4 -4
- package/src/components/Attachments/Attachments.tsx +1 -1
- package/src/components/BlockItemWrapper/Toolbar.tsx +1 -1
- package/src/components/DownloadButton/DownloadButton.tsx +1 -1
- package/src/components/Link/LinkInput.spec.ct.tsx +142 -0
- package/src/components/Link/LinkInput.tsx +80 -0
- package/src/components/{RichTextEditor/plugins/shared → Link}/LinkSelector/DocumentLink.tsx +1 -1
- package/src/components/{RichTextEditor/plugins/shared → Link}/LinkSelector/DocumentLinks.tsx +1 -1
- package/src/components/{RichTextEditor/plugins/shared → Link}/LinkSelector/LinkSelector.tsx +10 -4
- package/src/components/{RichTextEditor/plugins/shared → Link}/LinkSelector/PageLink.tsx +1 -1
- package/src/components/{RichTextEditor/plugins/shared → Link}/LinkSelector/PageLinks.tsx +8 -2
- package/src/components/Link/index.ts +6 -0
- package/src/components/Link/types.ts +6 -0
- package/src/components/{RichTextEditor/plugins/LinkPlugin → Link}/utils/getUrl.ts +1 -5
- package/src/components/{RichTextEditor/plugins/LinkPlugin → Link}/utils/index.ts +1 -0
- package/src/components/{RichTextEditor/plugins/LinkPlugin → Link}/utils/url.ts +2 -2
- package/src/components/RichTextEditor/plugins/ButtonPlugin/components/FloatingButton/InsertButtonModal/useInsertModal.ts +1 -1
- package/src/components/RichTextEditor/plugins/ButtonPlugin/createButtonPlugin.ts +1 -1
- package/src/components/RichTextEditor/plugins/LinkPlugin/FloatingLink/EditLinkModal/useFloatingLinkEdit.ts +1 -1
- package/src/components/RichTextEditor/plugins/LinkPlugin/FloatingLink/InsertLinkModal/InsertModal.tsx +11 -28
- package/src/components/RichTextEditor/plugins/LinkPlugin/FloatingLink/InsertLinkModal/types.ts +0 -5
- package/src/components/RichTextEditor/plugins/LinkPlugin/FloatingLink/InsertLinkModal/useInsertModal.ts +2 -2
- package/src/components/RichTextEditor/plugins/LinkPlugin/index.ts +1 -1
- package/src/components/index.ts +1 -0
- package/src/helpers/addHttps.ts +1 -1
- package/src/index.ts +2 -0
- package/dist/components/RichTextEditor/plugins/LinkPlugin/utils/getUrl.es.js +0 -18
- package/dist/components/RichTextEditor/plugins/LinkPlugin/utils/getUrl.es.js.map +0 -1
- package/dist/components/RichTextEditor/plugins/LinkPlugin/utils/relativeUrlRegex.es.js.map +0 -1
- package/dist/components/RichTextEditor/plugins/LinkPlugin/utils/url.es.js.map +0 -1
- package/dist/components/RichTextEditor/plugins/shared/LinkSelector/DocumentLink.es.js.map +0 -1
- package/dist/components/RichTextEditor/plugins/shared/LinkSelector/DocumentLinks.es.js.map +0 -1
- package/dist/components/RichTextEditor/plugins/shared/LinkSelector/LinkSelector.es.js +0 -62
- package/dist/components/RichTextEditor/plugins/shared/LinkSelector/LinkSelector.es.js.map +0 -1
- package/dist/components/RichTextEditor/plugins/shared/LinkSelector/PageLink.es.js.map +0 -1
- package/dist/components/RichTextEditor/plugins/shared/LinkSelector/PageLinks.es.js +0 -34
- package/dist/components/RichTextEditor/plugins/shared/LinkSelector/PageLinks.es.js.map +0 -1
- package/dist/components/RichTextEditor/plugins/shared/LinkSelector/SectionLink.es.js.map +0 -1
- /package/dist/components/{RichTextEditor/plugins/shared → Link}/LinkSelector/DocumentLink.es.js +0 -0
- /package/dist/components/{RichTextEditor/plugins/shared → Link}/LinkSelector/DocumentLinks.es.js +0 -0
- /package/dist/components/{RichTextEditor/plugins/shared → Link}/LinkSelector/PageLink.es.js +0 -0
- /package/dist/components/{RichTextEditor/plugins/shared → Link}/LinkSelector/SectionLink.es.js +0 -0
- /package/dist/components/{RichTextEditor/plugins/LinkPlugin → Link}/utils/relativeUrlRegex.es.js +0 -0
- /package/src/components/{RichTextEditor/plugins/shared → Link}/LinkSelector/LinkSelector.spec.ct.tsx +0 -0
- /package/src/components/{RichTextEditor/plugins/shared → Link}/LinkSelector/SectionLink.tsx +0 -0
- /package/src/components/{RichTextEditor/plugins/shared → Link}/LinkSelector/index.ts +0 -0
- /package/src/components/{RichTextEditor/plugins/LinkPlugin → Link}/utils/relativeUrlRegex.spec.ts +0 -0
- /package/src/components/{RichTextEditor/plugins/LinkPlugin → Link}/utils/relativeUrlRegex.ts +0 -0
- /package/src/components/{RichTextEditor/plugins/LinkPlugin → Link}/utils/url.spec.ts +0 -0
package/dist/styles.css
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
*,:before,:after{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(147 197 253 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: }::backdrop{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(147 197 253 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: }.tw-pointer-events-none{pointer-events:none}.tw-pointer-events-auto{pointer-events:auto}.tw-absolute{position:absolute}.tw-relative{position:relative}.tw-bottom-\[calc\(100\%-4px\)\]{bottom:calc(100% - 4px)}.tw-left-0{left:0}.tw-right-\[-3px\]{right:-3px}.tw-top-full{top:100%}.tw-z-10{z-index:10}.tw-z-20{z-index:20}.tw-z-\[2\]{z-index:2}.tw-m-0{margin:0}.tw-my-4{margin-top:1rem;margin-bottom:1rem}.tw-mr-1{margin-right:.25rem}.tw-mr-1\.5{margin-right:.375rem}.tw-mr-2{margin-right:.5rem}.tw-mt-3{margin-top:.75rem}.tw-mt-8{margin-top:2rem}.tw-flex{display:flex}.tw-inline-flex{display:inline-flex}.tw-h-0{height:0px}.tw-h-4{height:1rem}.tw-h-6{height:1.5rem}.tw-h-7{height:1.75rem}.tw-h-8{height:2rem}.tw-h-9{height:2.25rem}.tw-h-\[72px\]{height:72px}.tw-h-full{height:100%}.tw-min-h-\[10px\]{min-height:10px}.tw-w-0{width:0px}.tw-w-4{width:1rem}.tw-w-6{width:1.5rem}.tw-w-8{width:2rem}.tw-w-9{width:2.25rem}.tw-w-\[300px\]{width:300px}.tw-w-fit{width:-moz-fit-content;width:fit-content}.tw-w-full{width:100%}.tw-min-w-0{min-width:0px}.tw-min-w-\[400px\]{min-width:400px}.tw-flex-1{flex:1 1 0%}.tw-flex-auto{flex:1 1 auto}.tw-flex-shrink-0{flex-shrink:0}.tw-rotate-90{--tw-rotate: 90deg;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}@keyframes tw-pulse{50%{opacity:.5}}.tw-animate-pulse{animation:tw-pulse 2s cubic-bezier(.4,0,.6,1) infinite}.\!tw-cursor-not-allowed{cursor:not-allowed!important}.tw-cursor-grab{cursor:grab}.tw-cursor-grabbing{cursor:grabbing}.tw-cursor-pointer{cursor:pointer}.tw-select-none{-webkit-user-select:none;-moz-user-select:none;user-select:none}.tw-break-inside-avoid-column{-moz-column-break-inside:avoid;break-inside:avoid-column}.tw-break-after-column{-moz-column-break-after:column;break-after:column}.tw-flex-row{flex-direction:row}.tw-flex-col{flex-direction:column}.tw-items-start{align-items:flex-start}.tw-items-center{align-items:center}.tw-justify-end{justify-content:flex-end}.tw-justify-center{justify-content:center}.tw-justify-between{justify-content:space-between}.tw-gap-0{gap:0px}.tw-gap-0\.5{gap:.125rem}.tw-gap-1{gap:.25rem}.tw-gap-2{gap:.5rem}.tw-gap-3{gap:.75rem}.tw-gap-\[2px\]{gap:2px}.tw-gap-x-3{-moz-column-gap:.75rem;column-gap:.75rem}.tw-space-x-1>:not([hidden])~:not([hidden]){--tw-space-x-reverse: 0;margin-right:calc(.25rem * var(--tw-space-x-reverse));margin-left:calc(.25rem * calc(1 - var(--tw-space-x-reverse)))}.tw-space-x-2>:not([hidden])~:not([hidden]){--tw-space-x-reverse: 0;margin-right:calc(.5rem * var(--tw-space-x-reverse));margin-left:calc(.5rem * calc(1 - var(--tw-space-x-reverse)))}.tw-self-start{align-self:flex-start}.tw-overflow-hidden{overflow:hidden}.tw-overflow-y-auto{overflow-y:auto}.tw-text-ellipsis{text-overflow:ellipsis}.tw-whitespace-nowrap{white-space:nowrap}.tw-break-words{overflow-wrap:break-word}.tw-rounded{border-radius:var(--radius)}.tw-rounded-full{border-radius:9999px}.tw-rounded-sm{border-radius:.125rem}.tw-border{border-width:var(--line-width)}.tw-border-b{border-bottom-width:var(--line-width)}.tw-border-b-4{border-bottom-width:4px}.tw-border-l-4{border-left-width:4px}.tw-border-t{border-top-width:var(--line-width)}.tw-border-t-4{border-top-width:4px}.tw-border-solid{border-style:solid}.tw-border-dashed{border-style:dashed}.\!tw-border-red-50{--tw-border-opacity: 1 !important;border-color:rgb(255 128 102 / var(--tw-border-opacity))!important}.tw-border-blank-state-line{--tw-border-opacity: 1;border-color:rgb(163 165 165 / var(--tw-border-opacity))}.tw-border-blank-state-line-hover{--tw-border-opacity: 1;border-color:rgb(26 28 28 / var(--tw-border-opacity))}.tw-border-box-selected-inverse{border-color:var(--box-selected-inverse-color)}.tw-border-button-border{border-color:var(--button-border-color)}.tw-border-b-line{border-bottom-color:var(--line-color)}.tw-border-b-transparent{border-bottom-color:transparent}.tw-border-t-black-10{--tw-border-opacity: 1;border-top-color:rgb(234 235 235 / var(--tw-border-opacity))}.tw-border-t-transparent{border-top-color:transparent}.tw-bg-base{background-color:var(--base-color)}.tw-bg-base-alt{background-color:var(--base-color-alt)}.tw-bg-blank-state-pressed-inverse{--tw-bg-opacity: 1;background-color:rgb(241 241 241 / var(--tw-bg-opacity))}.tw-bg-blank-state-shaded-inverse{--tw-bg-opacity: 1;background-color:rgb(250 250 250 / var(--tw-bg-opacity))}.tw-bg-blank-state-weak-inverse{--tw-bg-opacity: 1;background-color:rgb(255 255 255 / var(--tw-bg-opacity))}.tw-bg-box-neutral-hover{background-color:var(--box-neutral-color-hover)}.tw-bg-box-neutral-strong-inverse{background-color:var(--box-neutral-strong-inverse-color)}.tw-bg-box-selected-pressed{background-color:var(--box-selected-color-pressed)}.tw-bg-box-selected-strong{background-color:var(--box-selected-strong-color)}.tw-bg-button-background{background-color:var(--button-background-color)}.tw-bg-button-background-pressed{background-color:var(--button-background-color-pressed)}.tw-bg-red-50{--tw-bg-opacity: 1;background-color:rgb(255 128 102 / var(--tw-bg-opacity))}.tw-bg-white{--tw-bg-opacity: 1;background-color:rgb(255 255 255 / var(--tw-bg-opacity))}.tw-p-1{padding:.25rem}.tw-p-1\.5{padding:.375rem}.tw-p-2{padding:.5rem}.tw-p-4{padding:1rem}.tw-p-7{padding:1.75rem}.tw-p-\[6px\]{padding:6px}.tw-px-0{padding-left:0;padding-right:0}.tw-px-2{padding-left:.5rem;padding-right:.5rem}.tw-px-2\.5{padding-left:.625rem;padding-right:.625rem}.tw-px-5{padding-left:1.25rem;padding-right:1.25rem}.tw-px-\[1px\]{padding-left:1px;padding-right:1px}.tw-py-0{padding-top:0;padding-bottom:0}.tw-py-2{padding-top:.5rem;padding-bottom:.5rem}.tw-py-3{padding-top:.75rem;padding-bottom:.75rem}.tw-pb-2{padding-bottom:.5rem}.tw-pl-12{padding-left:3rem}.tw-pl-14{padding-left:3.5rem}.tw-pl-7{padding-left:1.75rem}.tw-pt-5{padding-top:1.25rem}.tw-text-left{text-align:left}.tw-text-right{text-align:right}.tw-font-body{font-family:var(--body-family)}.tw-font-sans{font-family:Space Grotesk Frontify,Arial,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica,sans-serif,"Apple Color Emoji","Segoe UI Emoji",Segoe UI Symbol}.tw-text-\[13px\]{font-size:13px}.tw-text-s{font-size:.875rem;line-height:1rem}.tw-text-sm{font-size:.875rem;line-height:1.25rem}.tw-text-xs{font-size:.813rem;line-height:1rem}.tw-font-bold{font-weight:700}.tw-font-medium{font-weight:500}.tw-font-normal{font-weight:400}.tw-leading-4{line-height:1rem}.tw-leading-5{line-height:1.25rem}.tw-text-blank-state-shaded{--tw-text-opacity: 1;color:rgb(114 116 116 / var(--tw-text-opacity))}.tw-text-box-neutral-strong{color:var(--box-neutral-strong-color)}.tw-text-box-selected-inverse{color:var(--box-selected-inverse-color)}.tw-text-box-selected-strong-inverse{color:var(--box-selected-strong-inverse-color)}.tw-text-red-60{--tw-text-opacity: 1;color:rgb(255 55 90 / var(--tw-text-opacity))}.tw-text-red-65{--tw-text-opacity: 1;color:rgb(229 33 68 / var(--tw-text-opacity))}.tw-text-text{color:var(--text-color)}.tw-text-text-weak{color:var(--text-color-weak)}.\!tw-line-through{text-decoration-line:line-through!important}.tw-opacity-0{opacity:0}.tw-opacity-100{opacity:1}.tw-shadow{--tw-shadow: 0 1px 3px 0 rgb(0 0 0 / .1), 0 1px 2px -1px rgb(0 0 0 / .1);--tw-shadow-colored: 0 1px 3px 0 var(--tw-shadow-color), 0 1px 2px -1px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.tw-outline-none{outline:2px solid transparent;outline-offset:2px}.tw-outline{outline-style:solid}.tw-outline-1{outline-width:1px}.tw-outline-offset-1{outline-offset:1px}.tw-outline-offset-2{outline-offset:2px}.tw-outline-offset-\[1px\]{outline-offset:1px}.tw-outline-box-selected-inverse{outline-color:var(--box-selected-inverse-color)}.tw-outline-line{outline-color:var(--line-color)}.tw-outline-violet-60{outline-color:#825fff}.tw-transition{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,-webkit-backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter,-webkit-backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.tw-transition-transform{transition-property:transform;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.first\:tw-rounded-bl:first-child{border-bottom-left-radius:var(--radius)}.first\:tw-rounded-tl:first-child{border-top-left-radius:var(--radius)}.first\:tw-rounded-tr:first-child{border-top-right-radius:var(--radius)}.last\:tw-rounded-bl:last-child{border-bottom-left-radius:var(--radius)}.last\:tw-rounded-br:last-child{border-bottom-right-radius:var(--radius)}.last\:tw-rounded-tr:last-child{border-top-right-radius:var(--radius)}.first-of-type\:tw-ml-0:first-of-type{margin-left:0}.focus-within\:tw-opacity-100:focus-within{opacity:1}.focus-within\:tw-outline:focus-within{outline-style:solid}.hover\:tw-border-blank-state-line-hover:hover{--tw-border-opacity: 1;border-color:rgb(26 28 28 / var(--tw-border-opacity))}.hover\:tw-bg-black-10:hover{--tw-bg-opacity: 1;background-color:rgb(234 235 235 / var(--tw-bg-opacity))}.hover\:tw-bg-blank-state-hover-inverse:hover{--tw-bg-opacity: 1;background-color:rgb(255 255 255 / var(--tw-bg-opacity))}.hover\:tw-bg-box-neutral-hover:hover{background-color:var(--box-neutral-color-hover)}.hover\:tw-bg-box-neutral-strong-inverse-hover:hover{background-color:var(--box-neutral-strong-inverse-color-hover)}.hover\:tw-bg-box-selected-hover:hover{background-color:var(--box-selected-color-hover)}.hover\:tw-bg-button-background-hover:hover{background-color:var(--button-background-color-hover)}.hover\:tw-bg-button-background-pressed:hover{background-color:var(--button-background-color-pressed)}.hover\:tw-text-blank-state-hover:hover{--tw-text-opacity: 1;color:rgb(26 28 28 / var(--tw-text-opacity))}.hover\:tw-text-box-neutral-inverse-hover:hover{color:var(--box-neutral-inverse-color-hover)}.hover\:tw-outline:hover{outline-style:solid}.focus-visible\:tw-opacity-100:focus-visible{opacity:1}.focus-visible\:tw-ring-blue:focus-visible{--tw-ring-opacity: 1;--tw-ring-color: rgb(94 158 214 / var(--tw-ring-opacity)) }.active\:tw-border-blank-state-line-hover:active{--tw-border-opacity: 1;border-color:rgb(26 28 28 / var(--tw-border-opacity))}.active\:tw-bg-blank-state-pressed-inverse:active{--tw-bg-opacity: 1;background-color:rgb(241 241 241 / var(--tw-bg-opacity))}.active\:tw-bg-box-neutral-strong-inverse-pressed:active{background-color:var(--box-neutral-strong-inverse-color-pressed)}.active\:tw-bg-box-selected-pressed:active{background-color:var(--box-selected-color-pressed)}.active\:tw-bg-button-background-pressed:active{background-color:var(--button-background-color-pressed)}.active\:tw-text-blank-state-pressed:active{--tw-text-opacity: 1;color:rgb(8 8 8 / var(--tw-text-opacity))}.tw-group:hover .group-hover\:tw-text-box-neutral-inverse-hover{color:var(--box-neutral-inverse-color-hover)}.tw-group:hover .group-hover\:tw-opacity-100{opacity:1}.tw-group:focus .group-focus\:tw-opacity-100{opacity:1}.\[\&\:not\(\:first-child\)\]\:tw-border-l-0:not(:first-child){border-left-width:0px}.\[\&\:not\(\:first-child\)\]\:tw-border-t-0:not(:first-child){border-top-width:0px}.\[\&\>\*\]\:tw-pointer-events-none>*{pointer-events:none}
|
|
1
|
+
*,:before,:after{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(147 197 253 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: }::backdrop{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(147 197 253 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: }.tw-pointer-events-none{pointer-events:none}.tw-pointer-events-auto{pointer-events:auto}.tw-absolute{position:absolute}.tw-relative{position:relative}.tw-bottom-\[calc\(100\%-4px\)\]{bottom:calc(100% - 4px)}.tw-left-0{left:0}.tw-right-\[-3px\]{right:-3px}.tw-top-full{top:100%}.tw-z-10{z-index:10}.tw-z-20{z-index:20}.tw-z-\[2\]{z-index:2}.tw-m-0{margin:0}.tw-my-4{margin-top:1rem;margin-bottom:1rem}.tw-mr-1{margin-right:.25rem}.tw-mr-1\.5{margin-right:.375rem}.tw-mr-2{margin-right:.5rem}.tw-mt-1{margin-top:.25rem}.tw-mt-3{margin-top:.75rem}.tw-mt-5{margin-top:1.25rem}.tw-mt-8{margin-top:2rem}.tw-flex{display:flex}.tw-inline-flex{display:inline-flex}.tw-h-0{height:0px}.tw-h-4{height:1rem}.tw-h-6{height:1.5rem}.tw-h-7{height:1.75rem}.tw-h-8{height:2rem}.tw-h-9{height:2.25rem}.tw-h-\[72px\]{height:72px}.tw-h-full{height:100%}.tw-min-h-\[10px\]{min-height:10px}.tw-w-0{width:0px}.tw-w-4{width:1rem}.tw-w-6{width:1.5rem}.tw-w-8{width:2rem}.tw-w-9{width:2.25rem}.tw-w-\[300px\]{width:300px}.tw-w-fit{width:-moz-fit-content;width:fit-content}.tw-w-full{width:100%}.tw-min-w-0{min-width:0px}.tw-min-w-\[400px\]{min-width:400px}.tw-flex-1{flex:1 1 0%}.tw-flex-auto{flex:1 1 auto}.tw-flex-shrink-0{flex-shrink:0}.tw-rotate-90{--tw-rotate: 90deg;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}@keyframes tw-pulse{50%{opacity:.5}}.tw-animate-pulse{animation:tw-pulse 2s cubic-bezier(.4,0,.6,1) infinite}.\!tw-cursor-not-allowed{cursor:not-allowed!important}.tw-cursor-grab{cursor:grab}.tw-cursor-grabbing{cursor:grabbing}.tw-cursor-pointer{cursor:pointer}.tw-select-none{-webkit-user-select:none;-moz-user-select:none;user-select:none}.tw-break-inside-avoid-column{-moz-column-break-inside:avoid;break-inside:avoid-column}.tw-break-after-column{-moz-column-break-after:column;break-after:column}.tw-flex-row{flex-direction:row}.tw-flex-col{flex-direction:column}.tw-items-start{align-items:flex-start}.tw-items-center{align-items:center}.tw-justify-end{justify-content:flex-end}.tw-justify-center{justify-content:center}.tw-justify-between{justify-content:space-between}.tw-gap-0{gap:0px}.tw-gap-0\.5{gap:.125rem}.tw-gap-1{gap:.25rem}.tw-gap-2{gap:.5rem}.tw-gap-3{gap:.75rem}.tw-gap-\[2px\]{gap:2px}.tw-gap-x-3{-moz-column-gap:.75rem;column-gap:.75rem}.tw-space-x-1>:not([hidden])~:not([hidden]){--tw-space-x-reverse: 0;margin-right:calc(.25rem * var(--tw-space-x-reverse));margin-left:calc(.25rem * calc(1 - var(--tw-space-x-reverse)))}.tw-space-x-2>:not([hidden])~:not([hidden]){--tw-space-x-reverse: 0;margin-right:calc(.5rem * var(--tw-space-x-reverse));margin-left:calc(.5rem * calc(1 - var(--tw-space-x-reverse)))}.tw-self-start{align-self:flex-start}.tw-overflow-hidden{overflow:hidden}.tw-overflow-y-auto{overflow-y:auto}.tw-text-ellipsis{text-overflow:ellipsis}.tw-whitespace-nowrap{white-space:nowrap}.tw-break-words{overflow-wrap:break-word}.tw-rounded{border-radius:var(--radius)}.tw-rounded-full{border-radius:9999px}.tw-rounded-sm{border-radius:.125rem}.tw-border{border-width:var(--line-width)}.tw-border-b{border-bottom-width:var(--line-width)}.tw-border-b-4{border-bottom-width:4px}.tw-border-l-4{border-left-width:4px}.tw-border-t{border-top-width:var(--line-width)}.tw-border-t-4{border-top-width:4px}.tw-border-solid{border-style:solid}.tw-border-dashed{border-style:dashed}.\!tw-border-red-50{--tw-border-opacity: 1 !important;border-color:rgb(255 128 102 / var(--tw-border-opacity))!important}.tw-border-blank-state-line{--tw-border-opacity: 1;border-color:rgb(163 165 165 / var(--tw-border-opacity))}.tw-border-blank-state-line-hover{--tw-border-opacity: 1;border-color:rgb(26 28 28 / var(--tw-border-opacity))}.tw-border-box-selected-inverse{border-color:var(--box-selected-inverse-color)}.tw-border-button-border{border-color:var(--button-border-color)}.tw-border-b-line{border-bottom-color:var(--line-color)}.tw-border-b-transparent{border-bottom-color:transparent}.tw-border-t-black-10{--tw-border-opacity: 1;border-top-color:rgb(234 235 235 / var(--tw-border-opacity))}.tw-border-t-transparent{border-top-color:transparent}.tw-bg-base{background-color:var(--base-color)}.tw-bg-base-alt{background-color:var(--base-color-alt)}.tw-bg-blank-state-pressed-inverse{--tw-bg-opacity: 1;background-color:rgb(241 241 241 / var(--tw-bg-opacity))}.tw-bg-blank-state-shaded-inverse{--tw-bg-opacity: 1;background-color:rgb(250 250 250 / var(--tw-bg-opacity))}.tw-bg-blank-state-weak-inverse{--tw-bg-opacity: 1;background-color:rgb(255 255 255 / var(--tw-bg-opacity))}.tw-bg-box-neutral-hover{background-color:var(--box-neutral-color-hover)}.tw-bg-box-neutral-strong-inverse{background-color:var(--box-neutral-strong-inverse-color)}.tw-bg-box-selected-pressed{background-color:var(--box-selected-color-pressed)}.tw-bg-box-selected-strong{background-color:var(--box-selected-strong-color)}.tw-bg-button-background{background-color:var(--button-background-color)}.tw-bg-button-background-pressed{background-color:var(--button-background-color-pressed)}.tw-bg-red-50{--tw-bg-opacity: 1;background-color:rgb(255 128 102 / var(--tw-bg-opacity))}.tw-bg-white{--tw-bg-opacity: 1;background-color:rgb(255 255 255 / var(--tw-bg-opacity))}.tw-p-1{padding:.25rem}.tw-p-1\.5{padding:.375rem}.tw-p-2{padding:.5rem}.tw-p-4{padding:1rem}.tw-p-7{padding:1.75rem}.tw-p-\[6px\]{padding:6px}.tw-px-0{padding-left:0;padding-right:0}.tw-px-2{padding-left:.5rem;padding-right:.5rem}.tw-px-2\.5{padding-left:.625rem;padding-right:.625rem}.tw-px-5{padding-left:1.25rem;padding-right:1.25rem}.tw-px-\[1px\]{padding-left:1px;padding-right:1px}.tw-py-0{padding-top:0;padding-bottom:0}.tw-py-2{padding-top:.5rem;padding-bottom:.5rem}.tw-py-3{padding-top:.75rem;padding-bottom:.75rem}.tw-pb-2{padding-bottom:.5rem}.tw-pl-12{padding-left:3rem}.tw-pl-14{padding-left:3.5rem}.tw-pl-7{padding-left:1.75rem}.tw-pt-5{padding-top:1.25rem}.tw-text-left{text-align:left}.tw-text-right{text-align:right}.tw-font-body{font-family:var(--body-family)}.tw-font-sans{font-family:Space Grotesk Frontify,Arial,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica,sans-serif,"Apple Color Emoji","Segoe UI Emoji",Segoe UI Symbol}.tw-text-\[13px\]{font-size:13px}.tw-text-body-small{font-size:var(--body-size-small);line-height:var(--body-size-small-line-height)}.tw-text-s{font-size:.875rem;line-height:1rem}.tw-text-sm{font-size:.875rem;line-height:1.25rem}.tw-text-xs{font-size:.813rem;line-height:1rem}.tw-font-bold{font-weight:700}.tw-font-medium{font-weight:500}.tw-font-normal{font-weight:400}.tw-leading-4{line-height:1rem}.tw-leading-5{line-height:1.25rem}.tw-text-blank-state-shaded{--tw-text-opacity: 1;color:rgb(114 116 116 / var(--tw-text-opacity))}.tw-text-box-neutral-strong{color:var(--box-neutral-strong-color)}.tw-text-box-selected-inverse{color:var(--box-selected-inverse-color)}.tw-text-box-selected-strong-inverse{color:var(--box-selected-strong-inverse-color)}.tw-text-red-60{--tw-text-opacity: 1;color:rgb(255 55 90 / var(--tw-text-opacity))}.tw-text-text{color:var(--text-color)}.tw-text-text-negative{color:var(--text-color-negative)}.tw-text-text-weak{color:var(--text-color-weak)}.\!tw-line-through{text-decoration-line:line-through!important}.tw-opacity-0{opacity:0}.tw-opacity-100{opacity:1}.tw-shadow{--tw-shadow: 0 1px 3px 0 rgb(0 0 0 / .1), 0 1px 2px -1px rgb(0 0 0 / .1);--tw-shadow-colored: 0 1px 3px 0 var(--tw-shadow-color), 0 1px 2px -1px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.tw-outline-none{outline:2px solid transparent;outline-offset:2px}.tw-outline{outline-style:solid}.tw-outline-1{outline-width:1px}.tw-outline-offset-1{outline-offset:1px}.tw-outline-offset-2{outline-offset:2px}.tw-outline-offset-\[1px\]{outline-offset:1px}.tw-outline-box-selected-inverse{outline-color:var(--box-selected-inverse-color)}.tw-outline-line{outline-color:var(--line-color)}.tw-outline-violet-60{outline-color:#825fff}.tw-transition{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,-webkit-backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter,-webkit-backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.tw-transition-transform{transition-property:transform;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.first\:tw-rounded-bl:first-child{border-bottom-left-radius:var(--radius)}.first\:tw-rounded-tl:first-child{border-top-left-radius:var(--radius)}.first\:tw-rounded-tr:first-child{border-top-right-radius:var(--radius)}.last\:tw-rounded-bl:last-child{border-bottom-left-radius:var(--radius)}.last\:tw-rounded-br:last-child{border-bottom-right-radius:var(--radius)}.last\:tw-rounded-tr:last-child{border-top-right-radius:var(--radius)}.first-of-type\:tw-ml-0:first-of-type{margin-left:0}.focus-within\:tw-opacity-100:focus-within{opacity:1}.focus-within\:tw-outline:focus-within{outline-style:solid}.hover\:tw-border-blank-state-line-hover:hover{--tw-border-opacity: 1;border-color:rgb(26 28 28 / var(--tw-border-opacity))}.hover\:tw-bg-black-10:hover{--tw-bg-opacity: 1;background-color:rgb(234 235 235 / var(--tw-bg-opacity))}.hover\:tw-bg-blank-state-hover-inverse:hover{--tw-bg-opacity: 1;background-color:rgb(255 255 255 / var(--tw-bg-opacity))}.hover\:tw-bg-box-neutral-hover:hover{background-color:var(--box-neutral-color-hover)}.hover\:tw-bg-box-neutral-strong-inverse-hover:hover{background-color:var(--box-neutral-strong-inverse-color-hover)}.hover\:tw-bg-box-selected-hover:hover{background-color:var(--box-selected-color-hover)}.hover\:tw-bg-button-background-hover:hover{background-color:var(--button-background-color-hover)}.hover\:tw-bg-button-background-pressed:hover{background-color:var(--button-background-color-pressed)}.hover\:tw-text-blank-state-hover:hover{--tw-text-opacity: 1;color:rgb(26 28 28 / var(--tw-text-opacity))}.hover\:tw-text-box-neutral-inverse-hover:hover{color:var(--box-neutral-inverse-color-hover)}.hover\:tw-outline:hover{outline-style:solid}.focus-visible\:tw-opacity-100:focus-visible{opacity:1}.focus-visible\:tw-ring-blue:focus-visible{--tw-ring-opacity: 1;--tw-ring-color: rgb(94 158 214 / var(--tw-ring-opacity)) }.active\:tw-border-blank-state-line-hover:active{--tw-border-opacity: 1;border-color:rgb(26 28 28 / var(--tw-border-opacity))}.active\:tw-bg-blank-state-pressed-inverse:active{--tw-bg-opacity: 1;background-color:rgb(241 241 241 / var(--tw-bg-opacity))}.active\:tw-bg-box-neutral-strong-inverse-pressed:active{background-color:var(--box-neutral-strong-inverse-color-pressed)}.active\:tw-bg-box-selected-pressed:active{background-color:var(--box-selected-color-pressed)}.active\:tw-bg-button-background-pressed:active{background-color:var(--button-background-color-pressed)}.active\:tw-text-blank-state-pressed:active{--tw-text-opacity: 1;color:rgb(8 8 8 / var(--tw-text-opacity))}.tw-group:hover .group-hover\:tw-text-box-neutral-inverse-hover{color:var(--box-neutral-inverse-color-hover)}.tw-group:hover .group-hover\:tw-opacity-100{opacity:1}.tw-group:focus .group-focus\:tw-opacity-100{opacity:1}.\[\&\:not\(\:first-child\)\]\:tw-border-l-0:not(:first-child){border-left-width:0px}.\[\&\:not\(\:first-child\)\]\:tw-border-t-0:not(:first-child){border-top-width:0px}.\[\&\>\*\]\:tw-pointer-events-none>*{pointer-events:none}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@frontify/guideline-blocks-settings",
|
|
3
|
-
"version": "0.28.
|
|
3
|
+
"version": "0.28.5",
|
|
4
4
|
"description": "Provides types and helpers for the guideline block development",
|
|
5
5
|
"sideEffects": false,
|
|
6
6
|
"main": "dist/index.umd.js",
|
|
@@ -57,15 +57,15 @@
|
|
|
57
57
|
"@dnd-kit/core": "^6.0.8",
|
|
58
58
|
"@dnd-kit/modifiers": "^6.0.1",
|
|
59
59
|
"@dnd-kit/sortable": "^7.0.2",
|
|
60
|
-
"@frontify/fondue": "12.0.0-beta.
|
|
60
|
+
"@frontify/fondue": "12.0.0-beta.304",
|
|
61
61
|
"@react-aria/focus": "^3.13.0",
|
|
62
62
|
"@react-stately/overlays": "^3.6.0",
|
|
63
63
|
"@udecode/plate": "^21",
|
|
64
64
|
"escape-html": "^1.0.3",
|
|
65
65
|
"slate": "^0.94.1",
|
|
66
66
|
"slate-react": "^0.97.1",
|
|
67
|
-
"@frontify/app-bridge": "3.0.0-beta.
|
|
68
|
-
"@frontify/sidebar-settings": "0.6.
|
|
67
|
+
"@frontify/app-bridge": "3.0.0-beta.88",
|
|
68
|
+
"@frontify/sidebar-settings": "0.6.3"
|
|
69
69
|
},
|
|
70
70
|
"peerDependencies": {
|
|
71
71
|
"react": "^18",
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
import { DownloadButtonProps } from './types';
|
|
4
4
|
import { useFocusRing } from '@react-aria/focus';
|
|
5
|
-
import { FOCUS_STYLE, IconArrowCircleDown16, Tooltip, TooltipPosition } from '@frontify/fondue';
|
|
5
|
+
import { FOCUS_STYLE, IconArrowCircleDown16, LegacyTooltip as Tooltip, TooltipPosition } from '@frontify/fondue';
|
|
6
6
|
import { joinClassNames } from '../../utilities';
|
|
7
7
|
|
|
8
8
|
export const DownloadButton = ({ onDownload }: DownloadButtonProps) => {
|
|
@@ -0,0 +1,142 @@
|
|
|
1
|
+
/* (c) Copyright Frontify Ltd., all rights reserved. */
|
|
2
|
+
|
|
3
|
+
import { withAppBridgeBlockStubs } from '@frontify/app-bridge';
|
|
4
|
+
import { mount } from 'cypress/react18';
|
|
5
|
+
import { LinkInput } from './LinkInput';
|
|
6
|
+
import { ButtonSize, CheckboxState } from '@frontify/fondue';
|
|
7
|
+
|
|
8
|
+
const LINK_INPUT_ID = '[data-test-id="link-input"]';
|
|
9
|
+
const TEXT_INPUT_ID = '[data-test-id="text-input"]';
|
|
10
|
+
const INPUT_LABEL_CONTAINER_ID = '[data-test-id="input-label-container"]';
|
|
11
|
+
const BUTTON_ID = '[data-test-id="button"]';
|
|
12
|
+
const CLEAR_ICON_ID = '[data-test-id="clear-icon"]';
|
|
13
|
+
const CHECKBOX_ID = '[data-test-id="checkbox-input"]';
|
|
14
|
+
|
|
15
|
+
describe('Link Input', () => {
|
|
16
|
+
it('renders the link input', () => {
|
|
17
|
+
const [LinkInputWithStubs] = withAppBridgeBlockStubs(LinkInput, {});
|
|
18
|
+
mount(<LinkInputWithStubs />);
|
|
19
|
+
cy.get(LINK_INPUT_ID).should('exist');
|
|
20
|
+
});
|
|
21
|
+
|
|
22
|
+
it('renders the link inpus label, placeholder and info', () => {
|
|
23
|
+
const [LinkInputWithStubs] = withAppBridgeBlockStubs(LinkInput, {});
|
|
24
|
+
mount(<LinkInputWithStubs label="Custom Label" info="Custom Info" placeholder="Custom Placeholder" />);
|
|
25
|
+
cy.get(LINK_INPUT_ID).should('exist');
|
|
26
|
+
cy.get(INPUT_LABEL_CONTAINER_ID).contains('Custom Label');
|
|
27
|
+
cy.get(INPUT_LABEL_CONTAINER_ID).contains('Custom Info');
|
|
28
|
+
cy.get(TEXT_INPUT_ID).should('have.attr', 'placeholder', 'Custom Placeholder');
|
|
29
|
+
});
|
|
30
|
+
|
|
31
|
+
it('renders the link inpu with a valid url', () => {
|
|
32
|
+
const [LinkInputWithStubs] = withAppBridgeBlockStubs(LinkInput, {});
|
|
33
|
+
mount(<LinkInputWithStubs url="https://example.com" />);
|
|
34
|
+
cy.get(LINK_INPUT_ID).should('exist');
|
|
35
|
+
cy.get(TEXT_INPUT_ID).should('have.value', 'https://example.com');
|
|
36
|
+
});
|
|
37
|
+
|
|
38
|
+
it('renders with clear icon', () => {
|
|
39
|
+
const [LinkInputWithStubs] = withAppBridgeBlockStubs(LinkInput, {});
|
|
40
|
+
mount(<LinkInputWithStubs url="https://frontify.com" clearable />);
|
|
41
|
+
|
|
42
|
+
cy.get(CLEAR_ICON_ID).should('exist');
|
|
43
|
+
});
|
|
44
|
+
|
|
45
|
+
it('renders without clear icon', () => {
|
|
46
|
+
const [LinkInputWithStubs] = withAppBridgeBlockStubs(LinkInput, {});
|
|
47
|
+
mount(<LinkInputWithStubs clearable={false} />);
|
|
48
|
+
|
|
49
|
+
cy.get(TEXT_INPUT_ID).click({ force: true });
|
|
50
|
+
cy.get(TEXT_INPUT_ID).type('https://frontify.com').type('{enter}');
|
|
51
|
+
cy.get(CLEAR_ICON_ID).should('not.exist');
|
|
52
|
+
});
|
|
53
|
+
|
|
54
|
+
it('toggles checkbox on click', () => {
|
|
55
|
+
const [LinkInputWithStubs] = withAppBridgeBlockStubs(LinkInput, {});
|
|
56
|
+
mount(
|
|
57
|
+
<LinkInputWithStubs
|
|
58
|
+
onToggleTab={cy.stub().as('onToggleTab')}
|
|
59
|
+
url="https://frontify.com"
|
|
60
|
+
openInNewTab={false}
|
|
61
|
+
/>,
|
|
62
|
+
);
|
|
63
|
+
|
|
64
|
+
cy.get(CHECKBOX_ID).should('not.be.checked');
|
|
65
|
+
cy.get(CHECKBOX_ID).click({ force: true });
|
|
66
|
+
cy.get('@onToggleTab').should('be.called.with', true);
|
|
67
|
+
});
|
|
68
|
+
|
|
69
|
+
it('toggles checkbox on click if its already checked', () => {
|
|
70
|
+
const [LinkInputWithStubs] = withAppBridgeBlockStubs(LinkInput, {});
|
|
71
|
+
mount(<LinkInputWithStubs onToggleTab={cy.stub().as('onToggleTab')} url="https://frontify.com" openInNewTab />);
|
|
72
|
+
|
|
73
|
+
cy.get(CHECKBOX_ID).should('be.checked');
|
|
74
|
+
cy.get(CHECKBOX_ID).click({ force: true });
|
|
75
|
+
cy.get('@onToggleTab').should('be.called.with', false);
|
|
76
|
+
});
|
|
77
|
+
|
|
78
|
+
it('handles "Checked" state from newTab', () => {
|
|
79
|
+
const [LinkInputWithStubs] = withAppBridgeBlockStubs(LinkInput, {});
|
|
80
|
+
mount(
|
|
81
|
+
<LinkInputWithStubs
|
|
82
|
+
onToggleTab={cy.stub().as('onToggleTab')}
|
|
83
|
+
url="https://frontify.com"
|
|
84
|
+
newTab={CheckboxState.Checked}
|
|
85
|
+
/>,
|
|
86
|
+
);
|
|
87
|
+
cy.get(CHECKBOX_ID).should('be.checked');
|
|
88
|
+
cy.get(CHECKBOX_ID).click({ force: true });
|
|
89
|
+
cy.get('@onToggleTab').should('be.called.with', false);
|
|
90
|
+
});
|
|
91
|
+
|
|
92
|
+
it('handles "Unchecked" state from newTab', () => {
|
|
93
|
+
const [LinkInputWithStubs] = withAppBridgeBlockStubs(LinkInput, {});
|
|
94
|
+
mount(
|
|
95
|
+
<LinkInputWithStubs
|
|
96
|
+
onToggleTab={cy.stub().as('onToggleTab')}
|
|
97
|
+
url="https://frontify.com"
|
|
98
|
+
newTab={CheckboxState.Unchecked}
|
|
99
|
+
/>,
|
|
100
|
+
);
|
|
101
|
+
cy.get(CHECKBOX_ID).should('not.be.checked');
|
|
102
|
+
cy.get(CHECKBOX_ID).click({ force: true });
|
|
103
|
+
cy.get('@onToggleTab').should('be.called.with', true);
|
|
104
|
+
});
|
|
105
|
+
|
|
106
|
+
it('types into search field', () => {
|
|
107
|
+
const [LinkInputWithStubs] = withAppBridgeBlockStubs(LinkInput, {});
|
|
108
|
+
mount(<LinkInputWithStubs onUrlChange={cy.stub().as('onUrlChange')} />);
|
|
109
|
+
|
|
110
|
+
cy.get(TEXT_INPUT_ID).click({ force: true });
|
|
111
|
+
cy.get(TEXT_INPUT_ID).type('https://frontify.com');
|
|
112
|
+
cy.get('@onUrlChange').should('be.called.with', 'https://frontify.com');
|
|
113
|
+
});
|
|
114
|
+
|
|
115
|
+
it('shows internal link button', () => {
|
|
116
|
+
const [LinkInputWithStubs] = withAppBridgeBlockStubs(LinkInput, {});
|
|
117
|
+
mount(<LinkInputWithStubs />);
|
|
118
|
+
|
|
119
|
+
cy.get(BUTTON_ID).should('exist');
|
|
120
|
+
});
|
|
121
|
+
|
|
122
|
+
it('hides internal link button', () => {
|
|
123
|
+
const [LinkInputWithStubs] = withAppBridgeBlockStubs(LinkInput, {});
|
|
124
|
+
mount(<LinkInputWithStubs hideInternalLinkButton />);
|
|
125
|
+
|
|
126
|
+
cy.get(BUTTON_ID).should('not.exist');
|
|
127
|
+
});
|
|
128
|
+
|
|
129
|
+
it('renders * if input is required', () => {
|
|
130
|
+
const [LinkInputWithStubs] = withAppBridgeBlockStubs(LinkInput, {});
|
|
131
|
+
mount(<LinkInputWithStubs required label="Link" />);
|
|
132
|
+
|
|
133
|
+
cy.get(INPUT_LABEL_CONTAINER_ID).contains('*');
|
|
134
|
+
});
|
|
135
|
+
|
|
136
|
+
it('renders custom buttonsize', () => {
|
|
137
|
+
const [LinkInputWithStubs] = withAppBridgeBlockStubs(LinkInput, {});
|
|
138
|
+
mount(<LinkInputWithStubs buttonSize={ButtonSize.Small} />);
|
|
139
|
+
|
|
140
|
+
cy.get(BUTTON_ID).should('have.class', 'tw-text-body-small');
|
|
141
|
+
});
|
|
142
|
+
});
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
/* (c) Copyright Frontify Ltd., all rights reserved. */
|
|
2
|
+
|
|
3
|
+
import { AppBridgeBlock } from '@frontify/app-bridge';
|
|
4
|
+
import { ButtonSize, Checkbox, CheckboxState, FormControl, TextInput, TooltipPosition } from '@frontify/fondue';
|
|
5
|
+
import { LinkSelector } from './LinkSelector';
|
|
6
|
+
import { isValidUrlOrEmpty as internalIsValidUrlOrEmpty } from './utils';
|
|
7
|
+
|
|
8
|
+
type LinkInputProps = {
|
|
9
|
+
url?: string;
|
|
10
|
+
info?: string;
|
|
11
|
+
label?: string;
|
|
12
|
+
required?: boolean;
|
|
13
|
+
newTab?: CheckboxState;
|
|
14
|
+
openInNewTab?: boolean;
|
|
15
|
+
onUrlChange?: (value: string) => void;
|
|
16
|
+
onToggleTab?: (checked: boolean) => void;
|
|
17
|
+
isValidUrlOrEmpty?: (url: string) => boolean;
|
|
18
|
+
appBridge: AppBridgeBlock;
|
|
19
|
+
clearable?: boolean;
|
|
20
|
+
placeholder?: string;
|
|
21
|
+
buttonSize?: ButtonSize;
|
|
22
|
+
hideInternalLinkButton?: boolean;
|
|
23
|
+
};
|
|
24
|
+
|
|
25
|
+
export const LinkInput = ({
|
|
26
|
+
onUrlChange,
|
|
27
|
+
onToggleTab,
|
|
28
|
+
isValidUrlOrEmpty,
|
|
29
|
+
appBridge,
|
|
30
|
+
clearable,
|
|
31
|
+
placeholder,
|
|
32
|
+
newTab,
|
|
33
|
+
openInNewTab,
|
|
34
|
+
url = '',
|
|
35
|
+
required,
|
|
36
|
+
info,
|
|
37
|
+
label,
|
|
38
|
+
buttonSize,
|
|
39
|
+
hideInternalLinkButton,
|
|
40
|
+
}: LinkInputProps) => {
|
|
41
|
+
const isUrlValid = isValidUrlOrEmpty ? isValidUrlOrEmpty(url) : internalIsValidUrlOrEmpty(url);
|
|
42
|
+
const checkedState = newTab ?? (openInNewTab ? CheckboxState.Checked : CheckboxState.Unchecked);
|
|
43
|
+
return (
|
|
44
|
+
<div data-test-id="link-input">
|
|
45
|
+
<FormControl
|
|
46
|
+
label={{
|
|
47
|
+
children: label,
|
|
48
|
+
htmlFor: 'url',
|
|
49
|
+
required,
|
|
50
|
+
tooltip: info ? { content: info, position: TooltipPosition.Top } : undefined,
|
|
51
|
+
}}
|
|
52
|
+
>
|
|
53
|
+
<TextInput
|
|
54
|
+
id="url"
|
|
55
|
+
value={url}
|
|
56
|
+
clearable={clearable}
|
|
57
|
+
onChange={onUrlChange}
|
|
58
|
+
placeholder={placeholder ?? 'https://example.com'}
|
|
59
|
+
focusOnMount
|
|
60
|
+
/>
|
|
61
|
+
</FormControl>
|
|
62
|
+
{!isUrlValid && <div className="tw-text-text-negative tw-mt-1 tw-text-s">Please enter a valid URL.</div>}
|
|
63
|
+
|
|
64
|
+
{!hideInternalLinkButton && (
|
|
65
|
+
<div className="tw-mt-3">
|
|
66
|
+
<LinkSelector
|
|
67
|
+
url={url}
|
|
68
|
+
appBridge={appBridge}
|
|
69
|
+
onUrlChange={onUrlChange}
|
|
70
|
+
buttonSize={buttonSize ?? ButtonSize.Medium}
|
|
71
|
+
/>
|
|
72
|
+
</div>
|
|
73
|
+
)}
|
|
74
|
+
|
|
75
|
+
<div className="tw-mt-3">
|
|
76
|
+
<Checkbox value="new-tab" label="Open in new tab" state={checkedState} onChange={onToggleTab} />
|
|
77
|
+
</div>
|
|
78
|
+
</div>
|
|
79
|
+
);
|
|
80
|
+
};
|
|
@@ -4,7 +4,7 @@ import { AppBridgeBlock } from '@frontify/app-bridge';
|
|
|
4
4
|
import { useEffect, useState } from 'react';
|
|
5
5
|
import { PageLinks } from './PageLinks';
|
|
6
6
|
import { IconColorFan16, merge } from '@frontify/fondue';
|
|
7
|
-
import { InitiallyExpandedItems } from '
|
|
7
|
+
import { InitiallyExpandedItems } from '../';
|
|
8
8
|
|
|
9
9
|
type DocumentLinkProps = {
|
|
10
10
|
document: {
|
package/src/components/{RichTextEditor/plugins/shared → Link}/LinkSelector/DocumentLinks.tsx
RENAMED
|
@@ -3,8 +3,8 @@
|
|
|
3
3
|
import { AppBridgeBlock, Document } from '@frontify/app-bridge';
|
|
4
4
|
import { LoadingCircle } from '@frontify/fondue';
|
|
5
5
|
import { ReactElement, useEffect, useState } from 'react';
|
|
6
|
-
import { InitiallyExpandedItems } from '../../LinkPlugin/FloatingLink/InsertLinkModal/types';
|
|
7
6
|
import { DocumentLink } from './DocumentLink';
|
|
7
|
+
import { InitiallyExpandedItems } from '../';
|
|
8
8
|
|
|
9
9
|
type DocumentLinksProps = {
|
|
10
10
|
appBridge: AppBridgeBlock;
|
|
@@ -9,10 +9,16 @@ import { DocumentLinks } from './DocumentLinks';
|
|
|
9
9
|
type LinkSelectorProps = {
|
|
10
10
|
appBridge: AppBridgeBlock;
|
|
11
11
|
url: string;
|
|
12
|
-
onUrlChange
|
|
12
|
+
onUrlChange?: (value: string) => void;
|
|
13
|
+
buttonSize?: ButtonSize;
|
|
13
14
|
};
|
|
14
15
|
|
|
15
|
-
export const LinkSelector = ({
|
|
16
|
+
export const LinkSelector = ({
|
|
17
|
+
appBridge,
|
|
18
|
+
url,
|
|
19
|
+
onUrlChange,
|
|
20
|
+
buttonSize = ButtonSize.Medium,
|
|
21
|
+
}: LinkSelectorProps): ReactElement => {
|
|
16
22
|
const { open: openLinkTree, isOpen: isLinkTreeOpen, close: closeLinkTree } = useOverlayTriggerState({});
|
|
17
23
|
const [selectedUrl, setSelectedUrl] = useState<string>(url);
|
|
18
24
|
|
|
@@ -33,7 +39,7 @@ export const LinkSelector = ({ appBridge, url, onUrlChange }: LinkSelectorProps)
|
|
|
33
39
|
}, [url, selectedUrl]);
|
|
34
40
|
|
|
35
41
|
const saveLink = () => {
|
|
36
|
-
onUrlChange(selectedUrl);
|
|
42
|
+
onUrlChange?.(selectedUrl);
|
|
37
43
|
closeLinkTree();
|
|
38
44
|
};
|
|
39
45
|
|
|
@@ -41,7 +47,7 @@ export const LinkSelector = ({ appBridge, url, onUrlChange }: LinkSelectorProps)
|
|
|
41
47
|
<div data-test-id="internal-link-selector" onKeyDown={onPressEnter}>
|
|
42
48
|
<Button
|
|
43
49
|
icon={<IconLink />}
|
|
44
|
-
size={
|
|
50
|
+
size={buttonSize}
|
|
45
51
|
type={ButtonType.Button}
|
|
46
52
|
style={ButtonStyle.Default}
|
|
47
53
|
emphasis={ButtonEmphasis.Default}
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
import { AppBridgeBlock, useDocumentSection } from '@frontify/app-bridge';
|
|
4
4
|
import { merge } from '@frontify/fondue';
|
|
5
5
|
import { useEffect, useState } from 'react';
|
|
6
|
-
import { InitiallyExpandedItems } from '
|
|
6
|
+
import { InitiallyExpandedItems } from '../';
|
|
7
7
|
import { SectionLink } from './SectionLink';
|
|
8
8
|
|
|
9
9
|
type DocumentLinkProps = {
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
import { AppBridgeBlock, DocumentPage } from '@frontify/app-bridge';
|
|
4
4
|
import { LoadingCircle } from '@frontify/fondue';
|
|
5
5
|
import { ReactElement, useEffect, useState } from 'react';
|
|
6
|
-
import { InitiallyExpandedItems } from '
|
|
6
|
+
import { InitiallyExpandedItems } from '../';
|
|
7
7
|
import { PageLink } from './PageLink';
|
|
8
8
|
|
|
9
9
|
type PageLinksProps = {
|
|
@@ -30,7 +30,13 @@ export const PageLinks = ({
|
|
|
30
30
|
appBridge
|
|
31
31
|
.getDocumentPagesByDocumentId(documentId)
|
|
32
32
|
.then((_pages) => {
|
|
33
|
-
|
|
33
|
+
const pagesWithCategories = _pages
|
|
34
|
+
.filter((page) => !!page.category)
|
|
35
|
+
.sort((a, b) =>
|
|
36
|
+
a.category.sort === b.category.sort ? a.sort - b.sort : a.category.sort - b.category.sort,
|
|
37
|
+
);
|
|
38
|
+
const pagesWithoutCategories = _pages.filter((page) => !page.category).sort((a, b) => a.sort - b.sort);
|
|
39
|
+
setPages([...pagesWithCategories, ...pagesWithoutCategories]);
|
|
34
40
|
})
|
|
35
41
|
.finally(() => {
|
|
36
42
|
setIsLoading(false);
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/* (c) Copyright Frontify Ltd., all rights reserved. */
|
|
2
2
|
|
|
3
3
|
import { ELEMENT_LINK, PlateEditor, getAboveNode } from '@udecode/plate';
|
|
4
|
-
import { TLinkElement } from '
|
|
4
|
+
import { TLinkElement } from '../../RichTextEditor/plugins/LinkPlugin/types';
|
|
5
5
|
|
|
6
6
|
const getLinkNode = (editor: PlateEditor, cb: (link: TLinkElement) => string): string => {
|
|
7
7
|
const linkNode = getAboveNode<TLinkElement>(editor, { match: { type: ELEMENT_LINK } });
|
|
@@ -24,7 +24,3 @@ export const getUrl = (editor: PlateEditor) => {
|
|
|
24
24
|
export const getUrlFromLinkOrLegacyLink = (link: TLinkElement): string => {
|
|
25
25
|
return link.url || link.chosenLink?.searchResult?.link || '';
|
|
26
26
|
};
|
|
27
|
-
|
|
28
|
-
export const getUrlFromEditor = (editor: PlateEditor) => {
|
|
29
|
-
return getLinkNode(editor, getUrlFromLinkOrLegacyLink);
|
|
30
|
-
};
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/* (c) Copyright Frontify Ltd., all rights reserved. */
|
|
2
2
|
|
|
3
|
-
import { addHttps } from '
|
|
3
|
+
import { addHttps } from '../../../helpers';
|
|
4
4
|
import { relativeUrlRegex } from './relativeUrlRegex';
|
|
5
5
|
|
|
6
6
|
export const isValidUrl = (url: string) => {
|
|
@@ -16,6 +16,6 @@ export const isValidUrl = (url: string) => {
|
|
|
16
16
|
}
|
|
17
17
|
};
|
|
18
18
|
|
|
19
|
-
export const isValidUrlOrEmpty = (url: string) => {
|
|
19
|
+
export const isValidUrlOrEmpty = (url: string): boolean => {
|
|
20
20
|
return isValidUrl(addHttps(url)) || url === '';
|
|
21
21
|
};
|
|
@@ -11,7 +11,7 @@ import { getButtonStyle } from '../../../utils/getButtonStyle';
|
|
|
11
11
|
import { AppBridgeBlock } from '@frontify/app-bridge';
|
|
12
12
|
import { CheckboxState } from '@frontify/fondue';
|
|
13
13
|
import { addHttps } from '../../../../../../../helpers';
|
|
14
|
-
import { isValidUrlOrEmpty } from '
|
|
14
|
+
import { isValidUrlOrEmpty } from '../../../../../../Link/utils/url';
|
|
15
15
|
|
|
16
16
|
const initialState: InsertModalStateProps = {
|
|
17
17
|
url: '',
|
|
@@ -4,7 +4,7 @@ import { AppBridgeBlock } from '@frontify/app-bridge';
|
|
|
4
4
|
import { Plugin, PluginProps } from '@frontify/fondue';
|
|
5
5
|
import { RangeBeforeOptions, createPluginFactory } from '@udecode/plate';
|
|
6
6
|
import type { CSSProperties } from 'react';
|
|
7
|
-
import { isValidUrl } from '
|
|
7
|
+
import { isValidUrl } from '../../../Link/utils/url';
|
|
8
8
|
import { ButtonMarkupElement } from './ButtonMarkupElement';
|
|
9
9
|
import { ButtonButton } from './components/ButtonButton';
|
|
10
10
|
import { CustomFloatingButton } from './components/FloatingButton/CustomFloatingButton';
|
|
@@ -26,7 +26,7 @@ import {
|
|
|
26
26
|
useVirtualFloatingLink,
|
|
27
27
|
} from '@udecode/plate';
|
|
28
28
|
import { useCallback, useEffect } from 'react';
|
|
29
|
-
import { getUrlFromEditor } from '
|
|
29
|
+
import { getUrlFromEditor } from '../../../';
|
|
30
30
|
|
|
31
31
|
export const useFloatingLinkEdit = ({ floatingOptions, ...props }: FloatingLinkProps): HTMLPropsAs<'div'> => {
|
|
32
32
|
const editor = useEditorRef();
|
|
@@ -6,14 +6,13 @@ import {
|
|
|
6
6
|
ButtonEmphasis,
|
|
7
7
|
ButtonSize,
|
|
8
8
|
ButtonStyle,
|
|
9
|
-
Checkbox,
|
|
10
9
|
FormControl,
|
|
11
10
|
IconCheckMark20,
|
|
12
11
|
TextInput,
|
|
13
12
|
} from '@frontify/fondue';
|
|
14
13
|
import { FC, ReactNode } from 'react';
|
|
15
|
-
import { LinkSelector } from '../../../shared/LinkSelector';
|
|
16
14
|
import { InsertModalStateProps } from './types';
|
|
15
|
+
import { LinkInput } from '../../../../../Link/LinkInput';
|
|
17
16
|
|
|
18
17
|
type InsertModalProps = {
|
|
19
18
|
state: InsertModalStateProps;
|
|
@@ -23,7 +22,7 @@ type InsertModalProps = {
|
|
|
23
22
|
onCancel: () => void;
|
|
24
23
|
onSave: (event: React.MouseEvent<HTMLButtonElement, MouseEvent> | KeyboardEvent | undefined) => void;
|
|
25
24
|
hasValues: boolean;
|
|
26
|
-
isValidUrlOrEmpty: (url: string) => boolean
|
|
25
|
+
isValidUrlOrEmpty: (url: string) => boolean;
|
|
27
26
|
testId?: string;
|
|
28
27
|
children?: ReactNode;
|
|
29
28
|
appBridge: AppBridgeBlock;
|
|
@@ -55,31 +54,15 @@ export const InsertModal: FC<InsertModalProps> = ({
|
|
|
55
54
|
|
|
56
55
|
{children}
|
|
57
56
|
|
|
58
|
-
<div className="tw-
|
|
59
|
-
<
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
}
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
id="url"
|
|
68
|
-
value={state.url}
|
|
69
|
-
placeholder="https://example.com"
|
|
70
|
-
focusOnMount
|
|
71
|
-
onChange={onUrlChange}
|
|
72
|
-
/>
|
|
73
|
-
</FormControl>
|
|
74
|
-
{!isValidUrlOrEmpty(state?.url) && <div className="tw-text-red-65 tw-mt-3">Please enter a valid URL.</div>}
|
|
75
|
-
</div>
|
|
76
|
-
|
|
77
|
-
<div className="tw-mt-3">
|
|
78
|
-
<LinkSelector url={state.url} appBridge={appBridge} onUrlChange={onUrlChange} />
|
|
79
|
-
</div>
|
|
80
|
-
|
|
81
|
-
<div className="tw-mt-3">
|
|
82
|
-
<Checkbox value="new-tab" label="Open in new tab" state={state.newTab} onChange={onToggleTab} />
|
|
57
|
+
<div className="tw-mt-5">
|
|
58
|
+
<LinkInput
|
|
59
|
+
url={state.url}
|
|
60
|
+
newTab={state.newTab}
|
|
61
|
+
onUrlChange={onUrlChange}
|
|
62
|
+
onToggleTab={onToggleTab}
|
|
63
|
+
isValidUrlOrEmpty={isValidUrlOrEmpty}
|
|
64
|
+
appBridge={appBridge}
|
|
65
|
+
/>
|
|
83
66
|
</div>
|
|
84
67
|
<div className="tw-mt-3">
|
|
85
68
|
<div className={'tw-pt-5 tw-flex tw-gap-x-3 tw-justify-end tw-border-t tw-border-t-black-10'}>
|
|
@@ -12,10 +12,10 @@ import {
|
|
|
12
12
|
useHotkeys,
|
|
13
13
|
} from '@udecode/plate';
|
|
14
14
|
import { Dispatch, Reducer, useEffect, useReducer } from 'react';
|
|
15
|
-
import { getLegacyUrl, getUrl } from '
|
|
15
|
+
import { getLegacyUrl, getUrl } from '../../../../../Link/utils';
|
|
16
16
|
import { InsertModalDispatchType, InsertModalStateProps } from './types';
|
|
17
17
|
import { addHttps } from '../../../../../../helpers';
|
|
18
|
-
import { isValidUrlOrEmpty } from '
|
|
18
|
+
import { isValidUrlOrEmpty } from '../../../../../Link/utils/url';
|
|
19
19
|
|
|
20
20
|
const initialState: InsertModalStateProps = {
|
|
21
21
|
url: '',
|
|
@@ -9,7 +9,7 @@ import { CustomFloatingLink } from './FloatingLink/CustomFloatingLink';
|
|
|
9
9
|
import { LINK_PLUGIN } from './id';
|
|
10
10
|
import { LinkButton } from './LinkButton';
|
|
11
11
|
import { LinkMarkupElement } from './LinkMarkupElement';
|
|
12
|
-
import { isValidUrl } from '
|
|
12
|
+
import { isValidUrl } from '../../../Link/utils/url';
|
|
13
13
|
import { BlockStyles } from '../styles';
|
|
14
14
|
|
|
15
15
|
export const createLinkPlugin = (appBridge: AppBridgeBlock) =>
|
package/src/components/index.ts
CHANGED
package/src/helpers/addHttps.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/* (c) Copyright Frontify Ltd., all rights reserved. */
|
|
2
2
|
|
|
3
|
-
import { relativeUrlRegex } from '../components/
|
|
3
|
+
import { relativeUrlRegex } from '../components/Link/utils';
|
|
4
4
|
|
|
5
5
|
export const addHttps = (url: string) => {
|
|
6
6
|
if (relativeUrlRegex.test(url)) {
|