Skip to content

Commit

Permalink
fix: add hyperlink input (#3885)
Browse files Browse the repository at this point in the history
  • Loading branch information
chinook25 authored Jun 21, 2024
1 parent 9ca88bd commit 54387e1
Show file tree
Hide file tree
Showing 6 changed files with 265 additions and 109 deletions.
149 changes: 75 additions & 74 deletions apps/molgenis-components/lib/main.js
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
import Client from "../src/client/client.ts";
import { request } from "../src/client/client.ts";
import Client, { request } from "../src/client/client.ts";
import QueryEMX2 from "../src/queryEmx2/queryEmx2.ts";

//account
Expand Down Expand Up @@ -28,34 +27,36 @@ import FilterWell from "../src/components/filters/FilterWell.vue";
import FilterWells from "../src/components/filters/FilterWells.vue";

//forms
import InputTextLocalized from "../src/components/forms/InputTextLocalized.vue";
import LocaleSwitch from "../src/components/account/LocaleSwitch.vue";
import ArrayInput from "../src/components/forms/ArrayInput.vue";
import ButtonAction from "../src/components/forms/ButtonAction.vue";
import ButtonAlt from "../src/components/forms/ButtonAlt.vue";
import ButtonDanger from "../src/components/forms/ButtonDanger.vue";
import ButtonDropdown from "../src/components/forms/ButtonDropdown.vue";
import HtmlDropdown from "../src/components/forms/HtmlDropdown.vue";
import ButtonOutline from "../src/components/forms/ButtonOutline.vue";
import ButtonSubmit from "../src/components/forms/ButtonSubmit.vue";
import ConfirmModal from "../src/components/forms/ConfirmModal.vue";
import EditModal from "../src/components/forms/EditModal.vue";
import FormGroup from "../src/components/forms/FormGroup.vue";
import FormInput from "../src/components/forms/FormInput.vue";
import FormMolgenis from "../src/components/forms/FormMolgenis.vue";
import HtmlDropdown from "../src/components/forms/HtmlDropdown.vue";
import IconAction from "../src/components/forms/IconAction.vue";
import IconBar from "../src/components/forms/IconBar.vue";
import IconDanger from "../src/components/forms/IconDanger.vue";
import Info from "../src/components/forms/Info.vue";
import InfoPopover from "../src/components/forms/InfoPopover.vue";
import InlineInput from "../src/components/forms/InlineInput.vue";
import InputBoolean from "../src/components/forms/InputBoolean.vue";
import InputCheckbox from "../src/components/forms/InputCheckbox.vue";
import InputDate from "../src/components/forms/InputDate.vue";
import InputDateTime from "../src/components/forms/InputDateTime.vue";
import InputDecimal from "../src/components/forms/InputDecimal.vue";
import InputFile from "../src/components/forms/InputFile.vue";
import InputEmail from "../src/components/forms/InputEmail.vue";
import InputFile from "../src/components/forms/InputFile.vue";
import InputGroup from "../src/components/forms/InputGroup.vue";
import InputHeading from "../src/components/forms/InputHeading.vue";
import InputHyperlink from "../src/components/forms/InputHyperlink.vue";
import InputInt from "../src/components/forms/InputInt.vue";
import InputLong from "../src/components/forms/InputLong.vue";
import InputOntology from "../src/components/forms/InputOntology.vue";
Expand All @@ -75,10 +76,9 @@ import InputSelect from "../src/components/forms/InputSelect.vue";
import InputSelectInplace from "../src/components/forms/InputSelectInplace.vue";
import InputString from "../src/components/forms/InputString.vue";
import InputText from "../src/components/forms/InputText.vue";
import InfoPopover from "../src/components/forms/InfoPopover.vue";
import LocaleSwitch from "../src/components/account/LocaleSwitch.vue";
import TooltipComponent from "../src/components/forms/TooltipComponent.vue";
import InputTextLocalized from "../src/components/forms/InputTextLocalized.vue";
import Tooltip from "../src/components/forms/Tooltip.vue";
import TooltipComponent from "../src/components/forms/TooltipComponent.vue";

import MessageError from "../src/components/forms/MessageError.vue";
import MessageSuccess from "../src/components/forms/MessageSuccess.vue";
Expand All @@ -94,31 +94,31 @@ import LayoutCard from "../src/components/layout/LayoutCard.vue";
import LayoutForm from "../src/components/layout/LayoutForm.vue";
import LayoutModal from "../src/components/layout/LayoutModal.vue";
import Molgenis from "../src/components/layout/Molgenis.vue";
import MolgenisMenu from "../src/components/layout/MolgenisMenu.vue";
import MolgenisFooter from "../src/components/layout/MolgenisFooter.vue";
import MolgenisMenu from "../src/components/layout/MolgenisMenu.vue";
import ReadMore from "../src/components/layout/ReadMore.vue";
import SimpleModal from "../src/components/layout/SimpleModal.vue";
import ShowMore from "../src/components/layout/ShowMore.vue";
import SimpleModal from "../src/components/layout/SimpleModal.vue";
import Spinner from "../src/components/layout/Spinner.vue";
import Tab from "../src/components/layout/Tab.vue";
import Tabs from "../src/components/layout/Tabs.vue";
import VueTemplate from "../src/components/layout/VueTemplate.vue";

//tables
import AggregateTable from "../src/components/tables/AggregateTable.vue";
import DataDisplayCell from "../src/components/tables/DataDisplayCell.vue";
import RoutedTableExplorer from "../src/components/tables/RoutedTableExplorer.vue";
import TableExplorer from "../src/components/tables/TableExplorer.vue";
import Pagination from "../src/components/tables/Pagination.vue";
import RoutedTableExplorer from "../src/components/tables/RoutedTableExplorer.vue";
import RowButton from "../src/components/tables/RowButton.vue";
import RowButtonAdd from "../src/components/tables/RowButtonAdd.vue";
import RowButtonClone from "../src/components/tables/RowButtonClone.vue";
import RowButtonDelete from "../src/components/tables/RowButtonDelete.vue";
import RowButtonEdit from "../src/components/tables/RowButtonEdit.vue";
import ShowHide from "../src/components/tables/ShowHide.vue";
import TableExplorer from "../src/components/tables/TableExplorer.vue";
import TableMolgenis from "../src/components/tables/TableMolgenis.vue";
import TableSimple from "../src/components/tables/TableSimple.vue";
import TableStickyHeaders from "../src/components/tables/TableStickyHeaders.vue";
import AggregateTable from "../src/components/tables/AggregateTable.vue";

//tables/celltypes
import EmailDisplay from "../src/components/tables/cellTypes/EmailDisplay.vue";
Expand All @@ -137,55 +137,52 @@ import TaskManager from "../src/components/task/TaskManager.vue";

//utils
import {
applyJsTemplate,
deepClone,
flattenObject,
applyJsTemplate,
} from "../src/components/utils";

import { getRowErrors } from "../src/components/forms/formUtils/formUtils";

import constants, { privacyConstants } from "../src/components/constants";

export {
ContactDisplay,
GridBlock,
ImageCard,
ImageDisplay,
KeyValueBlock,
LinksList,
PageHeader,
PersonDetails,
TableDisplay,
MessageWarning,
InputHeading,
EmailDisplay,
HyperlinkDisplay,
FilterContainer,
FilterInput,
FilterSidebar,
FilterWell,
FilterWells,
AggregateTable,
ArrayInput,
Breadcrumb,
ButtonAction,
ButtonDropdown,
ButtonOutline,
ButtonAlt,
ButtonDanger,
ButtonDropdown,
ButtonOutline,
ButtonSubmit,
Client,
ConfirmModal,
ContactDisplay,
CookieWall,
DataDisplayCell,
EditModal,
EmailDisplay,
FileDisplay,
FilterContainer,
FilterInput,
FilterSidebar,
FilterWell,
FilterWells,
FormGroup,
FormInput,
FormMolgenis,
GTag,
GridBlock,
HtmlDropdown,
HyperlinkDisplay,
IconAction,
IconBar,
IconDanger,
ImageCard,
ImageDisplay,
Info,
InputTextLocalized,
InfoPopover,
InlineInput,
InputBoolean,
InputCheckbox,
Expand All @@ -195,15 +192,17 @@ export {
InputEmail,
InputFile,
InputGroup,
InputHeading,
InputHyperlink,
InputInt,
InputLong,
InputOntology,
InputOntologySubtree,
InputPassword,
InputRadio,
InputRangeDecimal,
InputRangeDate,
InputRangeDateTime,
InputRangeDecimal,
InputRangeInt,
InputRangeLong,
InputRefBack,
Expand All @@ -214,62 +213,64 @@ export {
InputSelectInplace,
InputString,
InputText,
InfoPopover,
LocaleSwitch,
MessageError,
MessageSuccess,
RowButtonAdd,
RowButtonClone,
RowButtonDelete,
RowEdit,
RowButtonEdit,
RowEditFooter,
Breadcrumb,
CookieWall,
GTag,
InputTextLocalized,
KeyValueBlock,
LayoutCard,
LayoutForm,
LayoutModal,
LinksList,
ListDisplay,
LocaleSwitch,
MessageError,
MessageSuccess,
MessageWarning,
Molgenis,
Pagination,
Spinner,
VueTemplate,
AggregateTable,
RoutedTableExplorer,
TableExplorer,
TableMolgenis,
TableSimple,
TableStickyHeaders,
SubTask,
Task,
Tab,
Tabs,
TaskManager,
TaskList,
TextDisplay,
TooltipComponent,
Tooltip,
MolgenisAccount,
MolgenisFooter,
MolgenisMenu,
MolgenisSession,
MolgenisSignin,
MolgenisSignup,
ObjectDisplay,
PageHeader,
Pagination,
PersonDetails,
QueryEMX2,
ReadMore,
RoutedTableExplorer,
RowButton,
RowButtonAdd,
RowButtonClone,
RowButtonDelete,
RowButtonEdit,
RowEdit,
RowEditFooter,
ShowHide,
ShowMore,
SimpleModal,
Spinner,
StringDisplay,
RowButton,
ListDisplay,
ObjectDisplay,
SubTask,
Tab,
TableDisplay,
TableExplorer,
TableMolgenis,
TableSimple,
TableStickyHeaders,
Tabs,
Task,
TaskList,
TaskManager,
TextDisplay,
TokenManager,
deepClone,
Tooltip,
TooltipComponent,
VueTemplate,
applyJsTemplate,
constants,
privacyConstants,
request,
deepClone,
flattenObject,
applyJsTemplate,
getRowErrors,
privacyConstants,
request,
};
44 changes: 44 additions & 0 deletions apps/molgenis-components/src/components/constants.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
export default {
CODE_0: 48,
CODE_9: 57,
CODE_BACKSPACE: 8,
CODE_DELETE: 46,
CODE_MINUS: 45,
CODE_COMMA: 44,
EMAIL_REGEX:
/^(([^<>()\\[\]\\.,;:\s@"]+(\.[^<>()\\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$|^$/,
HYPERLINK_REGEX:
/^((https?):\/\/)(www.)?[-a-zA-Z0-9@:%._\\+~#?&//=]{2,256}\.[a-z]{2,6}\b([-a-zA-Z0-9@:%._\\+~#?&//=]*)\/?$|^$/,
PERIOD_REGEX: /^P(?=\d+Y|\d+M|\d+D)(\d+Y)?(\d+M)?(\d+D)?$/,
MAX_LONG: "9223372036854775807",
MIN_LONG: "-9223372036854775807",
IS_CHAPTERS_ENABLED_FIELD_NAME: "isChaptersEnabled",
AUTO_ID: "AUTO_ID",
HEADING: "HEADING",
};

const LEVEL_1 = "Level 1";
const LEVEL_2 = "Level 2";
const LEVEL_3 = "Level 3";
const LEVEL_4 = "Level 4";
const CUSTOM = "Custom";
const POLICY_LEVEL_KEY = "PrivacyPolicyLevel";
const POLICY_TEXT_KEY = "PrivacyPolicyText";
const PREFABS = {
[LEVEL_1]: "No privacy data",
[LEVEL_2]: "Pseudomized data",
[LEVEL_3]: "Privacy data",
[LEVEL_4]: "Privacy data + medical",
[CUSTOM]: "",
};

export const privacyConstants = {
LEVEL_1,
LEVEL_2,
LEVEL_3,
LEVEL_4,
CUSTOM,
POLICY_LEVEL_KEY,
POLICY_TEXT_KEY,
PREFABS,
};
3 changes: 2 additions & 1 deletion apps/molgenis-components/src/components/forms/ArrayInput.vue
Original file line number Diff line number Diff line change
Expand Up @@ -43,6 +43,7 @@ import InputDate from "./InputDate.vue";
import InputDateTime from "./InputDateTime.vue";
import InputDecimal from "./InputDecimal.vue";
import InputEmail from "./InputEmail.vue";
import InputHyperlink from "./InputHyperlink.vue";
import InputInt from "./InputInt.vue";
import InputLong from "./InputLong.vue";
import InputString from "./InputString.vue";
Expand Down Expand Up @@ -71,7 +72,7 @@ export default {
DECIMAL_ARRAY: InputDecimal,
PERIOD_ARRAY: InputString,
EMAIL_ARRAY: InputEmail,
HYPERLINK_ARRAY: InputString,
HYPERLINK_ARRAY: InputHyperlink,
INT_ARRAY: InputInt,
LONG_ARRAY: InputLong,
STRING_ARRAY: InputString,
Expand Down
3 changes: 2 additions & 1 deletion apps/molgenis-components/src/components/forms/FormInput.vue
Original file line number Diff line number Diff line change
Expand Up @@ -33,13 +33,14 @@ import InputString from "../forms/InputString.vue";
import InputText from "../forms/InputText.vue";
import BaseInput from "../forms/baseInputs/BaseInput.vue";
import InputEmail from "./InputEmail.vue";
import InputHyperlink from "./InputHyperlink.vue";
import InputRefList from "./InputRefList.vue";
const typeToInputMap = {
AUTO_ID: InputString,
HEADING: InputHeading,
EMAIL: InputEmail,
HYPERLINK: InputString,
HYPERLINK: InputHyperlink,
STRING: InputString,
TEXT: InputText,
INT: InputInt,
Expand Down
Loading

0 comments on commit 54387e1

Please sign in to comment.