@activecollab/components 2.0.447 → 2.0.449
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/dist/cjs/components/Icons/collection/ClipboardIcon.js +61 -0
- package/dist/cjs/components/Icons/collection/ClipboardIcon.js.map +1 -0
- package/dist/cjs/components/Icons/collection/CutIcon.js +61 -0
- package/dist/cjs/components/Icons/collection/CutIcon.js.map +1 -0
- package/dist/cjs/components/Icons/collection/PasteIcon.js +61 -0
- package/dist/cjs/components/Icons/collection/PasteIcon.js.map +1 -0
- package/dist/cjs/components/Icons/collection/ScissorsIcon.js +61 -0
- package/dist/cjs/components/Icons/collection/ScissorsIcon.js.map +1 -0
- package/dist/cjs/components/Icons/collection/index.js +28 -0
- package/dist/cjs/components/Icons/collection/index.js.map +1 -1
- package/dist/cjs/presentation/shared/index.js +15 -1
- package/dist/cjs/presentation/shared/index.js.map +1 -1
- package/dist/cjs/presentation/shared/portfolioDetails.js +36 -12
- package/dist/cjs/presentation/shared/portfolioDetails.js.map +1 -1
- package/dist/esm/components/Icons/collection/ClipboardIcon.d.ts +32 -0
- package/dist/esm/components/Icons/collection/ClipboardIcon.d.ts.map +1 -0
- package/dist/esm/components/Icons/collection/ClipboardIcon.js +54 -0
- package/dist/esm/components/Icons/collection/ClipboardIcon.js.map +1 -0
- package/dist/esm/components/Icons/collection/CutIcon.d.ts +32 -0
- package/dist/esm/components/Icons/collection/CutIcon.d.ts.map +1 -0
- package/dist/esm/components/Icons/collection/CutIcon.js +54 -0
- package/dist/esm/components/Icons/collection/CutIcon.js.map +1 -0
- package/dist/esm/components/Icons/collection/PasteIcon.d.ts +32 -0
- package/dist/esm/components/Icons/collection/PasteIcon.d.ts.map +1 -0
- package/dist/esm/components/Icons/collection/PasteIcon.js +54 -0
- package/dist/esm/components/Icons/collection/PasteIcon.js.map +1 -0
- package/dist/esm/components/Icons/collection/ScissorsIcon.d.ts +32 -0
- package/dist/esm/components/Icons/collection/ScissorsIcon.d.ts.map +1 -0
- package/dist/esm/components/Icons/collection/ScissorsIcon.js +54 -0
- package/dist/esm/components/Icons/collection/ScissorsIcon.js.map +1 -0
- package/dist/esm/components/Icons/collection/index.d.ts +4 -0
- package/dist/esm/components/Icons/collection/index.d.ts.map +1 -1
- package/dist/esm/components/Icons/collection/index.js +4 -0
- package/dist/esm/components/Icons/collection/index.js.map +1 -1
- package/dist/esm/presentation/shared/index.d.ts +2 -2
- package/dist/esm/presentation/shared/index.d.ts.map +1 -1
- package/dist/esm/presentation/shared/index.js +1 -1
- package/dist/esm/presentation/shared/index.js.map +1 -1
- package/dist/esm/presentation/shared/portfolioDetails.d.ts +36 -2
- package/dist/esm/presentation/shared/portfolioDetails.d.ts.map +1 -1
- package/dist/esm/presentation/shared/portfolioDetails.js +33 -11
- package/dist/esm/presentation/shared/portfolioDetails.js.map +1 -1
- package/dist/index.js +644 -440
- package/dist/index.js.map +1 -1
- package/dist/index.min.js +1 -1
- package/dist/index.min.js.map +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["_tokens","require","Object","keys","forEach","key","prototype","hasOwnProperty","call","_exportNames","exports","defineProperty","enumerable","get","_MainLogo","_RoundAvatar","_PresentationShell","_headers","_ProjectOptionsMenu","_PortfolioOptionsMenu","_dashboardWidgets","_FloatingControls","_MessageDialog","_MessageFeedback","_HelpAndSupportMenu","_LinkingCommandsButton","_LinkBranchOrPullRequestDialog","_ConnectRepositoryDialog","_WebhookLogsDialog","_SourceCodeSection","_SuggestSubtasksButton","_TaskOptionsMenu","_UserMenu","_UserDetailsDialog","_TwoFactorShield","_TwoFactorDialogs","_settings","_FeatureAvailability","_portfolioDetails"],"sources":["../../../../src/presentation/shared/index.ts"],"sourcesContent":["/**\n * Shared building blocks for the Presentation mock-ups (`Presentation/*`\n * stories). The application shell, page headers, tab bar and small widgets are\n * defined once here and reused by the List view, Column view, Task sheet and\n * empty-page stories so the chrome stays identical and in one place.\n */\nexport * from \"./tokens\";\nexport { MainLogo } from \"./MainLogo\";\nexport { RoundAvatar } from \"./RoundAvatar\";\nexport { PresentationShell, StyledPagePaper } from \"./PresentationShell\";\nexport type { PresentationShellProps } from \"./PresentationShell\";\nexport { PageHeader, ProjectPageHeader, TabHeader } from \"./headers\";\nexport type {\n PageHeaderProps,\n ProjectPageHeaderProps,\n TabHeaderProps,\n} from \"./headers\";\nexport { ProjectOptionsMenu } from \"./ProjectOptionsMenu\";\nexport { PortfolioOptionsMenu } from \"./PortfolioOptionsMenu\";\nexport type { PortfolioOptionsMenuProps } from \"./PortfolioOptionsMenu\";\nexport {\n WidgetGrid,\n WidgetGroupBy,\n StatWidget,\n WidgetRankedList,\n OverviewWidget,\n AreaChartWidget,\n DailyDeltaChartWidget,\n LeaderboardWidget,\n StackedBarChartWidget,\n CHART_SERIES_COLORS,\n OVERVIEW_SECTION_COLORS,\n PERIOD_OPTIONS,\n PeriodPicker,\n} from \"./dashboardWidgets\";\nexport type {\n WidgetGroupByProps,\n StatWidgetProps,\n RankedListItem,\n OverviewSectionData,\n OverviewWidgetProps,\n AreaChartWidgetProps,\n DailyDeltaPoint,\n DailyDeltaChartWidgetProps,\n LeaderboardRowData,\n LeaderboardWidgetProps,\n StackedBarColumn,\n StackedBarChartWidgetProps,\n PeriodPickerProps,\n} from \"./dashboardWidgets\";\n\nexport type { ProjectOptionsMenuProps } from \"./ProjectOptionsMenu\";\nexport { FloatingControls } from \"./FloatingControls\";\nexport {\n MessageDialog,\n DocLinkContext,\n messageComponents,\n} from \"./MessageDialog\";\nexport type {\n MessageDialogProps,\n MessageDialogSize,\n OpenArticleHandler,\n} from \"./MessageDialog\";\nexport {\n MessageFeedback,\n POSITIVE_FEEDBACK_OPTIONS,\n NEGATIVE_FEEDBACK_OPTIONS,\n} from \"./MessageFeedback\";\nexport type {\n MessageFeedbackProps,\n MessageFeedbackResult,\n FeedbackOption,\n FeedbackSentiment,\n} from \"./MessageFeedback\";\nexport { HelpAndSupportMenu } from \"./HelpAndSupportMenu\";\nexport type { HelpAndSupportMenuProps } from \"./HelpAndSupportMenu\";\nexport { LinkingCommandsButton } from \"./LinkingCommandsButton\";\nexport { LinkBranchOrPullRequestDialog } from \"./LinkBranchOrPullRequestDialog\";\nexport type { LinkBranchOrPullRequestDialogProps } from \"./LinkBranchOrPullRequestDialog\";\nexport {\n ConnectRepositoryDialog,\n RepositorySelect,\n buildRepoOptions,\n CONNECTIONS,\n PROJECT_REPOSITORIES,\n CONNECTABLE_REPOSITORIES,\n} from \"./ConnectRepositoryDialog\";\nexport type {\n ConnectRepositoryDialogProps,\n RepositorySelectProps,\n Connection,\n ConnectionService,\n Repository,\n} from \"./ConnectRepositoryDialog\";\nexport {\n WebhookLogsDialog,\n WEBHOOK_CONNECTIONS,\n WEBHOOK_REPOSITORIES,\n} from \"./WebhookLogsDialog\";\nexport type {\n WebhookLogsDialogProps,\n WebhookConnection,\n WebhookRepository,\n WebhookLog,\n} from \"./WebhookLogsDialog\";\nexport {\n SourceCodeSection,\n IssueRow,\n CodeRow,\n Spine,\n HistoryDialog,\n CompletedHeader,\n} from \"./SourceCodeSection\";\nexport type {\n IssueEntry,\n CodeEntry,\n Stage,\n HistoryEvent,\n StageState,\n CodeStatus,\n SectionVariant,\n} from \"./SourceCodeSection\";\nexport { SuggestSubtasksButton } from \"./SuggestSubtasksButton\";\nexport { TaskOptionsMenu, TaskListOptionsMenu } from \"./TaskOptionsMenu\";\nexport type {\n TaskOptionsMenuProps,\n TaskListOptionsMenuProps,\n} from \"./TaskOptionsMenu\";\nexport { UserMenu } from \"./UserMenu\";\nexport type { UserMenuProps, UserMenuVariant } from \"./UserMenu\";\nexport {\n UserDetailsDialog,\n USER_DETAILS_AVATAR_SIZE,\n} from \"./UserDetailsDialog\";\nexport type {\n UserDetailsDialogProps,\n UserDetailsAvatar,\n} from \"./UserDetailsDialog\";\nexport { TwoFactorShield } from \"./TwoFactorShield\";\nexport type { TwoFactorShieldProps } from \"./TwoFactorShield\";\nexport { BackupCodesDialogs, CreateLoginCodeDialogs } from \"./TwoFactorDialogs\";\nexport type {\n BackupCodesDialogsProps,\n CreateLoginCodeDialogsProps,\n} from \"./TwoFactorDialogs\";\nexport {\n SettingsHeader,\n SettingsContent,\n StyledSettingRow,\n RowText,\n SettingRow,\n} from \"./settings\";\nexport type { SettingsHeaderProps, SettingRowProps } from \"./settings\";\nexport {\n FeatureAvailability,\n DEFAULT_FEATURE_AVAILABILITY,\n} from \"./FeatureAvailability\";\nexport type {\n FeatureAvailabilityProps,\n AvailabilityRow,\n AvailabilityMark,\n AvailabilityStatus,\n} from \"./FeatureAvailability\";\nexport {\n PORTFOLIO_TYPES,\n VISIBILITY_OPTIONS,\n DEFAULT_PORTFOLIO_FORM_VALUES,\n LEADERS_LIST,\n CATEGORIES,\n CLIENTS,\n contextFieldLabel,\n leaderShortName,\n defaultPortfolioName,\n isPortfolioDetailsValid,\n sampleProjectOptionIds,\n PortfolioDetailsFields,\n EditPortfolioDialog,\n} from \"./portfolioDetails\";\nexport type {\n PortfolioKind,\n PortfolioVisibility,\n GroupBy,\n PortfolioFormValues,\n PickerLeader,\n PortfolioDetailsFieldsProps,\n EditPortfolioDialogProps,\n} from \"./portfolioDetails\";\n"],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","names":["_tokens","require","Object","keys","forEach","key","prototype","hasOwnProperty","call","_exportNames","exports","defineProperty","enumerable","get","_MainLogo","_RoundAvatar","_PresentationShell","_headers","_ProjectOptionsMenu","_PortfolioOptionsMenu","_dashboardWidgets","_FloatingControls","_MessageDialog","_MessageFeedback","_HelpAndSupportMenu","_LinkingCommandsButton","_LinkBranchOrPullRequestDialog","_ConnectRepositoryDialog","_WebhookLogsDialog","_SourceCodeSection","_SuggestSubtasksButton","_TaskOptionsMenu","_UserMenu","_UserDetailsDialog","_TwoFactorShield","_TwoFactorDialogs","_settings","_FeatureAvailability","_portfolioDetails"],"sources":["../../../../src/presentation/shared/index.ts"],"sourcesContent":["/**\n * Shared building blocks for the Presentation mock-ups (`Presentation/*`\n * stories). The application shell, page headers, tab bar and small widgets are\n * defined once here and reused by the List view, Column view, Task sheet and\n * empty-page stories so the chrome stays identical and in one place.\n */\nexport * from \"./tokens\";\nexport { MainLogo } from \"./MainLogo\";\nexport { RoundAvatar } from \"./RoundAvatar\";\nexport { PresentationShell, StyledPagePaper } from \"./PresentationShell\";\nexport type { PresentationShellProps } from \"./PresentationShell\";\nexport { PageHeader, ProjectPageHeader, TabHeader } from \"./headers\";\nexport type {\n PageHeaderProps,\n ProjectPageHeaderProps,\n TabHeaderProps,\n} from \"./headers\";\nexport { ProjectOptionsMenu } from \"./ProjectOptionsMenu\";\nexport { PortfolioOptionsMenu } from \"./PortfolioOptionsMenu\";\nexport type { PortfolioOptionsMenuProps } from \"./PortfolioOptionsMenu\";\nexport {\n WidgetGrid,\n WidgetGroupBy,\n StatWidget,\n WidgetRankedList,\n OverviewWidget,\n AreaChartWidget,\n DailyDeltaChartWidget,\n LeaderboardWidget,\n StackedBarChartWidget,\n CHART_SERIES_COLORS,\n OVERVIEW_SECTION_COLORS,\n PERIOD_OPTIONS,\n PeriodPicker,\n} from \"./dashboardWidgets\";\nexport type {\n WidgetGroupByProps,\n StatWidgetProps,\n RankedListItem,\n OverviewSectionData,\n OverviewWidgetProps,\n AreaChartWidgetProps,\n DailyDeltaPoint,\n DailyDeltaChartWidgetProps,\n LeaderboardRowData,\n LeaderboardWidgetProps,\n StackedBarColumn,\n StackedBarChartWidgetProps,\n PeriodPickerProps,\n} from \"./dashboardWidgets\";\n\nexport type { ProjectOptionsMenuProps } from \"./ProjectOptionsMenu\";\nexport { FloatingControls } from \"./FloatingControls\";\nexport {\n MessageDialog,\n DocLinkContext,\n messageComponents,\n} from \"./MessageDialog\";\nexport type {\n MessageDialogProps,\n MessageDialogSize,\n OpenArticleHandler,\n} from \"./MessageDialog\";\nexport {\n MessageFeedback,\n POSITIVE_FEEDBACK_OPTIONS,\n NEGATIVE_FEEDBACK_OPTIONS,\n} from \"./MessageFeedback\";\nexport type {\n MessageFeedbackProps,\n MessageFeedbackResult,\n FeedbackOption,\n FeedbackSentiment,\n} from \"./MessageFeedback\";\nexport { HelpAndSupportMenu } from \"./HelpAndSupportMenu\";\nexport type { HelpAndSupportMenuProps } from \"./HelpAndSupportMenu\";\nexport { LinkingCommandsButton } from \"./LinkingCommandsButton\";\nexport { LinkBranchOrPullRequestDialog } from \"./LinkBranchOrPullRequestDialog\";\nexport type { LinkBranchOrPullRequestDialogProps } from \"./LinkBranchOrPullRequestDialog\";\nexport {\n ConnectRepositoryDialog,\n RepositorySelect,\n buildRepoOptions,\n CONNECTIONS,\n PROJECT_REPOSITORIES,\n CONNECTABLE_REPOSITORIES,\n} from \"./ConnectRepositoryDialog\";\nexport type {\n ConnectRepositoryDialogProps,\n RepositorySelectProps,\n Connection,\n ConnectionService,\n Repository,\n} from \"./ConnectRepositoryDialog\";\nexport {\n WebhookLogsDialog,\n WEBHOOK_CONNECTIONS,\n WEBHOOK_REPOSITORIES,\n} from \"./WebhookLogsDialog\";\nexport type {\n WebhookLogsDialogProps,\n WebhookConnection,\n WebhookRepository,\n WebhookLog,\n} from \"./WebhookLogsDialog\";\nexport {\n SourceCodeSection,\n IssueRow,\n CodeRow,\n Spine,\n HistoryDialog,\n CompletedHeader,\n} from \"./SourceCodeSection\";\nexport type {\n IssueEntry,\n CodeEntry,\n Stage,\n HistoryEvent,\n StageState,\n CodeStatus,\n SectionVariant,\n} from \"./SourceCodeSection\";\nexport { SuggestSubtasksButton } from \"./SuggestSubtasksButton\";\nexport { TaskOptionsMenu, TaskListOptionsMenu } from \"./TaskOptionsMenu\";\nexport type {\n TaskOptionsMenuProps,\n TaskListOptionsMenuProps,\n} from \"./TaskOptionsMenu\";\nexport { UserMenu } from \"./UserMenu\";\nexport type { UserMenuProps, UserMenuVariant } from \"./UserMenu\";\nexport {\n UserDetailsDialog,\n USER_DETAILS_AVATAR_SIZE,\n} from \"./UserDetailsDialog\";\nexport type {\n UserDetailsDialogProps,\n UserDetailsAvatar,\n} from \"./UserDetailsDialog\";\nexport { TwoFactorShield } from \"./TwoFactorShield\";\nexport type { TwoFactorShieldProps } from \"./TwoFactorShield\";\nexport { BackupCodesDialogs, CreateLoginCodeDialogs } from \"./TwoFactorDialogs\";\nexport type {\n BackupCodesDialogsProps,\n CreateLoginCodeDialogsProps,\n} from \"./TwoFactorDialogs\";\nexport {\n SettingsHeader,\n SettingsContent,\n StyledSettingRow,\n RowText,\n SettingRow,\n} from \"./settings\";\nexport type { SettingsHeaderProps, SettingRowProps } from \"./settings\";\nexport {\n FeatureAvailability,\n DEFAULT_FEATURE_AVAILABILITY,\n} from \"./FeatureAvailability\";\nexport type {\n FeatureAvailabilityProps,\n AvailabilityRow,\n AvailabilityMark,\n AvailabilityStatus,\n} from \"./FeatureAvailability\";\nexport {\n PORTFOLIO_TYPES,\n VISIBILITY_OPTIONS,\n DEFAULT_PORTFOLIO_FORM_VALUES,\n LEADERS_LIST,\n CATEGORIES,\n CLIENTS,\n contextFieldLabel,\n leaderShortName,\n defaultPortfolioName,\n isPortfolioDetailsValid,\n sampleProjectOptionIds,\n PortfolioDetailsFields,\n EditPortfolioDialog,\n ProjectsPicker,\n PICKER_PROJECTS,\n} from \"./portfolioDetails\";\nexport type {\n PortfolioKind,\n PortfolioVisibility,\n GroupBy,\n PortfolioFormValues,\n PickerLeader,\n PortfolioDetailsFieldsProps,\n EditPortfolioDialogProps,\n PickerProject,\n ProjectsPickerProps,\n} from \"./portfolioDetails\";\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAMA,IAAAA,OAAA,GAAAC,OAAA;AAAAC,MAAA,CAAAC,IAAA,CAAAH,OAAA,EAAAI,OAAA,WAAAC,GAAA;EAAA,IAAAA,GAAA,kBAAAA,GAAA;EAAA,IAAAH,MAAA,CAAAI,SAAA,CAAAC,cAAA,CAAAC,IAAA,CAAAC,YAAA,EAAAJ,GAAA;EAAA,IAAAA,GAAA,IAAAK,OAAA,IAAAA,OAAA,CAAAL,GAAA,MAAAL,OAAA,CAAAK,GAAA;EAAAH,MAAA,CAAAS,cAAA,CAAAD,OAAA,EAAAL,GAAA;IAAAO,UAAA;IAAAC,GAAA,WAAAA,IAAA;MAAA,OAAAb,OAAA,CAAAK,GAAA;IAAA;EAAA;AAAA;AACA,IAAAS,SAAA,GAAAb,OAAA;AACA,IAAAc,YAAA,GAAAd,OAAA;AACA,IAAAe,kBAAA,GAAAf,OAAA;AAEA,IAAAgB,QAAA,GAAAhB,OAAA;AAMA,IAAAiB,mBAAA,GAAAjB,OAAA;AACA,IAAAkB,qBAAA,GAAAlB,OAAA;AAEA,IAAAmB,iBAAA,GAAAnB,OAAA;AAgCA,IAAAoB,iBAAA,GAAApB,OAAA;AACA,IAAAqB,cAAA,GAAArB,OAAA;AAUA,IAAAsB,gBAAA,GAAAtB,OAAA;AAWA,IAAAuB,mBAAA,GAAAvB,OAAA;AAEA,IAAAwB,sBAAA,GAAAxB,OAAA;AACA,IAAAyB,8BAAA,GAAAzB,OAAA;AAEA,IAAA0B,wBAAA,GAAA1B,OAAA;AAeA,IAAA2B,kBAAA,GAAA3B,OAAA;AAWA,IAAA4B,kBAAA,GAAA5B,OAAA;AAiBA,IAAA6B,sBAAA,GAAA7B,OAAA;AACA,IAAA8B,gBAAA,GAAA9B,OAAA;AAKA,IAAA+B,SAAA,GAAA/B,OAAA;AAEA,IAAAgC,kBAAA,GAAAhC,OAAA;AAQA,IAAAiC,gBAAA,GAAAjC,OAAA;AAEA,IAAAkC,iBAAA,GAAAlC,OAAA;AAKA,IAAAmC,SAAA,GAAAnC,OAAA;AAQA,IAAAoC,oBAAA,GAAApC,OAAA;AAUA,IAAAqC,iBAAA,GAAArC,OAAA","ignoreList":[]}
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
-
exports.sampleProjectOptionIds = exports.leaderShortName = exports.isPortfolioDetailsValid = exports.defaultPortfolioName = exports.contextFieldLabel = exports.VISIBILITY_OPTIONS = exports.PortfolioDetailsFields = exports.PORTFOLIO_TYPES = exports.LEADERS_LIST = exports.EditPortfolioDialog = exports.DEFAULT_PORTFOLIO_FORM_VALUES = exports.CLIENTS = exports.CATEGORIES = void 0;
|
|
6
|
+
exports.sampleProjectOptionIds = exports.leaderShortName = exports.isPortfolioDetailsValid = exports.defaultPortfolioName = exports.contextFieldLabel = exports.VISIBILITY_OPTIONS = exports.ProjectsPicker = exports.PortfolioDetailsFields = exports.PORTFOLIO_TYPES = exports.PORTFOLIO_PROJECTS_LOCKED_NOTE = exports.PICKER_PROJECTS = exports.LEADERS_LIST = exports.EditPortfolioDialog = exports.DEFAULT_PORTFOLIO_FORM_VALUES = exports.CLIENTS = exports.CATEGORIES = void 0;
|
|
7
7
|
var _react = _interopRequireWildcard(require("react"));
|
|
8
8
|
var _styledComponents = _interopRequireDefault(require("styled-components"));
|
|
9
9
|
var _Button = require("../../components/Button");
|
|
@@ -15,6 +15,7 @@ var _Label = require("../../components/Label");
|
|
|
15
15
|
var _RadioGroup = require("../../components/RadioGroup");
|
|
16
16
|
var _Select = require("../../components/Select");
|
|
17
17
|
var _SelectTrigger = require("../../components/SelectTrigger");
|
|
18
|
+
var _Typography = require("../../components/Typography");
|
|
18
19
|
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
19
20
|
function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function _interopRequireWildcard(e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (var _t in e) "default" !== _t && {}.hasOwnProperty.call(e, _t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, _t)) && (i.get || i.set) ? o(f, _t, i) : f[_t] = e[_t]); return f; })(e, t); }
|
|
20
21
|
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
@@ -87,7 +88,7 @@ var LEADERS_LIST = exports.LEADERS_LIST = [{
|
|
|
87
88
|
}];
|
|
88
89
|
var CATEGORIES = exports.CATEGORIES = ["Brand & Identity", "Web & Product", "Marketing", "Internal Ops"];
|
|
89
90
|
var CLIENTS = exports.CLIENTS = ["Aperture Studio", "Orbit Telecom", "Northwind Traders", "Meridian Health"];
|
|
90
|
-
var PICKER_PROJECTS = [{
|
|
91
|
+
var PICKER_PROJECTS = exports.PICKER_PROJECTS = [{
|
|
91
92
|
id: 1,
|
|
92
93
|
name: "Website Redesign",
|
|
93
94
|
client: "Aperture Studio",
|
|
@@ -301,6 +302,12 @@ var isPortfolioDetailsValid = exports.isPortfolioDetailsValid = function isPortf
|
|
|
301
302
|
return values.name.trim().length > 0 && (values.type === "custom" ? values.projectIds.length > 0 : Boolean(values.context));
|
|
302
303
|
};
|
|
303
304
|
|
|
305
|
+
/* Edit-only notes under the projects picker (custom portfolios). */
|
|
306
|
+
var PORTFOLIO_PROJECTS_LOCKED_NOTE = exports.PORTFOLIO_PROJECTS_LOCKED_NOTE = "This portfolio includes projects you can't access, so its project list is locked here. Ask an Owner to change it for you.";
|
|
307
|
+
var completedProjectsNote = function completedProjectsNote(count) {
|
|
308
|
+
return count === 1 ? "1 project in this portfolio has been completed, so it isn't shown here. To take it out, use the portfolio's Projects tab." : "".concat(count, " projects in this portfolio have been completed, so they aren't shown here. To take one out, use the portfolio's Projects tab.");
|
|
309
|
+
};
|
|
310
|
+
|
|
304
311
|
/* ------------------------------------------------------------------ */
|
|
305
312
|
/* Pickers */
|
|
306
313
|
/* ------------------------------------------------------------------ */
|
|
@@ -327,12 +334,15 @@ var ProjectsGroupBy = function ProjectsGroupBy(_ref3) {
|
|
|
327
334
|
}, /*#__PURE__*/_react.default.createElement(_Icons.SortGeneralIcon, null))
|
|
328
335
|
});
|
|
329
336
|
};
|
|
330
|
-
var ProjectsPicker = function ProjectsPicker(_ref4) {
|
|
337
|
+
var ProjectsPicker = exports.ProjectsPicker = function ProjectsPicker(_ref4) {
|
|
331
338
|
var selected = _ref4.selected,
|
|
332
339
|
_onChange2 = _ref4.onChange,
|
|
333
340
|
groupBy = _ref4.groupBy,
|
|
334
341
|
onGroupBy = _ref4.onGroupBy,
|
|
335
|
-
invalid = _ref4.invalid
|
|
342
|
+
invalid = _ref4.invalid,
|
|
343
|
+
disabled = _ref4.disabled,
|
|
344
|
+
_ref4$triggerId = _ref4.triggerId,
|
|
345
|
+
triggerId = _ref4$triggerId === void 0 ? "pf-projects" : _ref4$triggerId;
|
|
336
346
|
var options = (0, _react.useMemo)(function () {
|
|
337
347
|
return groupPickerProjects(groupBy);
|
|
338
348
|
}, [groupBy]);
|
|
@@ -346,14 +356,15 @@ var ProjectsPicker = function ProjectsPicker(_ref4) {
|
|
|
346
356
|
return _onChange2(value);
|
|
347
357
|
},
|
|
348
358
|
noResultText: "No results",
|
|
349
|
-
endAdornment: /*#__PURE__*/_react.default.createElement(ProjectsGroupBy, {
|
|
359
|
+
endAdornment: disabled ? undefined : /*#__PURE__*/_react.default.createElement(ProjectsGroupBy, {
|
|
350
360
|
selected: groupBy,
|
|
351
361
|
onChange: onGroupBy
|
|
352
362
|
}),
|
|
353
363
|
target: /*#__PURE__*/_react.default.createElement(_SelectTrigger.SelectTrigger, {
|
|
354
|
-
id:
|
|
364
|
+
id: triggerId,
|
|
355
365
|
className: "pf-trigger",
|
|
356
366
|
invalid: invalid,
|
|
367
|
+
disabled: disabled,
|
|
357
368
|
typographyProps: {
|
|
358
369
|
color: count > 0 ? "primary" : "quaternary"
|
|
359
370
|
}
|
|
@@ -417,7 +428,9 @@ var PortfolioDetailsFields = exports.PortfolioDetailsFields = function Portfolio
|
|
|
417
428
|
onProjects = _ref6.onProjects,
|
|
418
429
|
onGroupBy = _ref6.onGroupBy,
|
|
419
430
|
onVisibility = _ref6.onVisibility,
|
|
420
|
-
showErrors = _ref6.showErrors
|
|
431
|
+
showErrors = _ref6.showErrors,
|
|
432
|
+
projectsLocked = _ref6.projectsLocked,
|
|
433
|
+
completedProjectsCount = _ref6.completedProjectsCount;
|
|
421
434
|
var type = values.type,
|
|
422
435
|
name = values.name,
|
|
423
436
|
context = values.context,
|
|
@@ -442,13 +455,20 @@ var PortfolioDetailsFields = exports.PortfolioDetailsFields = function Portfolio
|
|
|
442
455
|
className: "field"
|
|
443
456
|
}, /*#__PURE__*/_react.default.createElement(_Label.Label, {
|
|
444
457
|
htmlFor: type === "custom" ? "pf-projects" : "pf-context"
|
|
445
|
-
}, contextFieldLabel(type)), type === "custom" ? /*#__PURE__*/_react.default.createElement(ProjectsPicker, {
|
|
458
|
+
}, contextFieldLabel(type)), type === "custom" ? /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(ProjectsPicker, {
|
|
446
459
|
selected: projectIds,
|
|
447
460
|
onChange: onProjects,
|
|
448
461
|
groupBy: groupBy,
|
|
449
462
|
onGroupBy: onGroupBy,
|
|
450
|
-
invalid: pickerInvalid
|
|
451
|
-
|
|
463
|
+
invalid: pickerInvalid,
|
|
464
|
+
disabled: projectsLocked
|
|
465
|
+
}), projectsLocked ? /*#__PURE__*/_react.default.createElement(_Typography.Caption1, {
|
|
466
|
+
color: "tertiary",
|
|
467
|
+
className: "pf-note"
|
|
468
|
+
}, PORTFOLIO_PROJECTS_LOCKED_NOTE) : completedProjectsCount ? /*#__PURE__*/_react.default.createElement(_Typography.Caption1, {
|
|
469
|
+
color: "tertiary",
|
|
470
|
+
className: "pf-note"
|
|
471
|
+
}, completedProjectsNote(completedProjectsCount)) : null) : /*#__PURE__*/_react.default.createElement(ContextPicker, {
|
|
452
472
|
type: type,
|
|
453
473
|
value: context,
|
|
454
474
|
onChange: onContext,
|
|
@@ -486,7 +506,9 @@ var EditPortfolioDialog = exports.EditPortfolioDialog = function EditPortfolioDi
|
|
|
486
506
|
var open = _ref7.open,
|
|
487
507
|
initialValues = _ref7.initialValues,
|
|
488
508
|
onClose = _ref7.onClose,
|
|
489
|
-
onSave = _ref7.onSave
|
|
509
|
+
onSave = _ref7.onSave,
|
|
510
|
+
projectsLocked = _ref7.projectsLocked,
|
|
511
|
+
completedProjectsCount = _ref7.completedProjectsCount;
|
|
490
512
|
var _useState = (0, _react.useState)(initialValues),
|
|
491
513
|
_useState2 = _slicedToArray(_useState, 2),
|
|
492
514
|
values = _useState2[0],
|
|
@@ -549,7 +571,9 @@ var EditPortfolioDialog = exports.EditPortfolioDialog = function EditPortfolioDi
|
|
|
549
571
|
visibility
|
|
550
572
|
});
|
|
551
573
|
},
|
|
552
|
-
showErrors: showErrors
|
|
574
|
+
showErrors: showErrors,
|
|
575
|
+
projectsLocked: projectsLocked,
|
|
576
|
+
completedProjectsCount: completedProjectsCount
|
|
553
577
|
})), /*#__PURE__*/_react.default.createElement(_Dialog.Dialog.ContentDivider, null), /*#__PURE__*/_react.default.createElement(_Dialog.Dialog.Actions, null, /*#__PURE__*/_react.default.createElement(_Button.Button, {
|
|
554
578
|
variant: "primary",
|
|
555
579
|
style: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"portfolioDetails.js","names":["_react","_interopRequireWildcard","require","_styledComponents","_interopRequireDefault","_Button","_Dialog","_IconButton","_Icons","_Input","_Label","_RadioGroup","_Select","_SelectTrigger","e","__esModule","default","t","WeakMap","r","n","o","i","f","__proto__","has","get","set","_t","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","ownKeys","keys","getOwnPropertySymbols","filter","enumerable","push","apply","_objectSpread","arguments","length","forEach","_defineProperty","getOwnPropertyDescriptors","defineProperties","_toPropertyKey","value","configurable","writable","_toPrimitive","Symbol","toPrimitive","TypeError","String","Number","_slicedToArray","_arrayWithHoles","_iterableToArrayLimit","_unsupportedIterableToArray","_nonIterableRest","a","_arrayLikeToArray","toString","slice","constructor","name","Array","from","test","l","iterator","u","next","done","return","isArray","DEFAULT_PORTFOLIO_FORM_VALUES","exports","type","context","undefined","projectIds","groupBy","visibility","LEADERS_LIST","short","CATEGORIES","CLIENTS","PICKER_PROJECTS","id","client","category","label","leader","favorite","GROUP_BY_OPTIONS","projectOptionId","project","concat","sampleProjectOptionIds","count","Math","max","map","toProjectOptions","projects","sort","b","localeCompare","groupPickerProjects","other","groups","options","field","without","buckets","Map","_buckets$get","key","entries","_ref","_ref2","PORTFOLIO_TYPES","title","description","VISIBILITY_OPTIONS","contextFieldLabel","leaderShortName","_LEADERS_LIST$find$sh","_LEADERS_LIST$find","find","defaultPortfolioName","isPortfolioDetailsValid","values","trim","Boolean","ProjectsGroupBy","_ref3","selected","onChange","createElement","Select","keepSameOptionsOrder","disableSearch","disabledInternalSort","forceCloseMenu","position","target","IconButton","variant","SortGeneralIcon","ProjectsPicker","_ref4","onGroupBy","invalid","useMemo","triggerText","noResultText","endAdornment","SelectTrigger","className","typographyProps","color","ContextPicker","_ref5","placeholder","StyledDetailsForm","styled","div","withConfig","displayName","componentId","PortfolioDetailsFields","_ref6","onName","onContext","onProjects","onVisibility","showErrors","nameInvalid","pickerInvalid","Label","htmlFor","Input","event","RadioGroup","option","EditPortfolioDialog","_ref7","open","initialValues","onClose","onSave","_useState","useState","_useState2","setValues","_useState3","_useState4","setShowErrors","useEffect","patch","current","handleSave","Dialog","disableCloseOnEsc","Title","ContentDivider","Content","Actions","Button","style","marginRight","onClick"],"sources":["../../../../src/presentation/shared/portfolioDetails.tsx"],"sourcesContent":["import React, { ReactElement, useEffect, useMemo, useState } from \"react\";\n\nimport styled from \"styled-components\";\n\nimport { Button } from \"../../components/Button\";\nimport { Dialog } from \"../../components/Dialog\";\nimport { IconButton } from \"../../components/IconButton\";\nimport { SortGeneralIcon } from \"../../components/Icons\";\nimport { Input } from \"../../components/Input\";\nimport { Label } from \"../../components/Label\";\nimport { RadioGroup } from \"../../components/RadioGroup\";\nimport { Select } from \"../../components/Select\";\nimport { SelectTrigger } from \"../../components/SelectTrigger\";\n\n/*\n Portfolio details form — the shared \"step 2\" of the Create Portfolio wizard,\n reused verbatim as the Edit Portfolio dialog.\n\n This mirrors a pattern used across the app: the fields that make up the final\n step of a creation wizard are the same fields shown, later, when the object is\n edited. So the form body (name, the type's picker, visibility) and its\n validation live here once, and two consumers render it:\n\n - The Create Portfolio wizard (PortfoliosList.stories.tsx) renders\n <PortfolioDetailsFields> inside its step-2 <Dialog.Content>, with a\n \"Create Portfolio\" action.\n - <EditPortfolioDialog> (opened from PortfolioOptionsMenu's Edit item)\n renders the SAME <PortfolioDetailsFields> inside a standalone <Dialog>,\n with a \"Save Changes\" action.\n\n Both use isPortfolioDetailsValid() and the same always-enabled-submit,\n outline-on-submit validation rule.\n*/\n\n/* ------------------------------------------------------------------ */\n/* Domain types */\n/* ------------------------------------------------------------------ */\n\n/** How a portfolio decides its members (two kinds, three context types). */\nexport type PortfolioKind = \"custom\" | \"category\" | \"client\" | \"leader\";\n\nexport type PortfolioVisibility = \"everyone\" | \"me\";\n\n/** Grouping of the projects multi-select — matches Invite-to-Projects. */\nexport type GroupBy =\n | \"favorites\"\n | \"labels\"\n | \"companies\"\n | \"categories\"\n | \"leaders\";\n\n/** The editable shape shared by create step 2 and the edit dialog. */\nexport interface PortfolioFormValues {\n type: PortfolioKind;\n name: string;\n /** For context portfolios: the chosen category / client / leader. */\n context?: string;\n /** For custom portfolios: the hand-picked project option ids. */\n projectIds: string[];\n groupBy: GroupBy;\n visibility: PortfolioVisibility;\n}\n\n/** A blank custom portfolio — the fallback seed for the edit dialog. */\nexport const DEFAULT_PORTFOLIO_FORM_VALUES: PortfolioFormValues = {\n type: \"custom\",\n name: \"\",\n context: undefined,\n projectIds: [],\n groupBy: \"favorites\",\n visibility: \"everyone\",\n};\n\n/* ------------------------------------------------------------------ */\n/* Pickers' mock data */\n/* ------------------------------------------------------------------ */\n\nexport interface PickerLeader {\n name: string;\n /** Short \"Firstname L.\" form used in the default portfolio name. */\n short: string;\n}\n\nexport const LEADERS_LIST: PickerLeader[] = [\n { name: \"Theo Brandt\", short: \"Theo B.\" },\n { name: \"Isabel Cortez\", short: \"Isabel C.\" },\n { name: \"Grace Bauer\", short: \"Grace B.\" },\n { name: \"Noah Mercer\", short: \"Noah M.\" },\n];\n\nexport const CATEGORIES = [\n \"Brand & Identity\",\n \"Web & Product\",\n \"Marketing\",\n \"Internal Ops\",\n];\n\nexport const CLIENTS = [\n \"Aperture Studio\",\n \"Orbit Telecom\",\n \"Northwind Traders\",\n \"Meridian Health\",\n];\n\ninterface PickerProject {\n id: number;\n name: string;\n client: string;\n category: string;\n label: string;\n leader: string;\n favorite: boolean;\n}\n\nconst PICKER_PROJECTS: PickerProject[] = [\n {\n id: 1,\n name: \"Website Redesign\",\n client: \"Aperture Studio\",\n category: \"Web & Product\",\n label: \"Design\",\n leader: \"Theo Brandt\",\n favorite: true,\n },\n {\n id: 2,\n name: \"Brand Refresh\",\n client: \"Aperture Studio\",\n category: \"Brand & Identity\",\n label: \"Design\",\n leader: \"Isabel Cortez\",\n favorite: true,\n },\n {\n id: 3,\n name: \"Mobile App\",\n client: \"Orbit Telecom\",\n category: \"Web & Product\",\n label: \"Build\",\n leader: \"Grace Bauer\",\n favorite: false,\n },\n {\n id: 4,\n name: \"Q3 Campaign\",\n client: \"Orbit Telecom\",\n category: \"Marketing\",\n label: \"Campaign\",\n leader: \"Noah Mercer\",\n favorite: true,\n },\n {\n id: 5,\n name: \"Internal Wiki\",\n client: \"\",\n category: \"Internal Ops\",\n label: \"\",\n leader: \"Theo Brandt\",\n favorite: false,\n },\n {\n id: 6,\n name: \"Packaging System\",\n client: \"Northwind Traders\",\n category: \"Brand & Identity\",\n label: \"Design\",\n leader: \"Isabel Cortez\",\n favorite: false,\n },\n {\n id: 7,\n name: \"Support Portal\",\n client: \"Meridian Health\",\n category: \"Web & Product\",\n label: \"Build\",\n leader: \"Grace Bauer\",\n favorite: false,\n },\n {\n id: 8,\n name: \"Annual Report\",\n client: \"Northwind Traders\",\n category: \"Marketing\",\n label: \"Campaign\",\n leader: \"Noah Mercer\",\n favorite: true,\n },\n];\n\n/* Group-by options and default match the Invite-to-Projects picker exactly. */\nconst GROUP_BY_OPTIONS: { id: GroupBy; name: string }[] = [\n { id: \"favorites\", name: \"Favorites\" },\n { id: \"labels\", name: \"Label\" },\n { id: \"companies\", name: \"Client\" },\n { id: \"categories\", name: \"Category\" },\n { id: \"leaders\", name: \"Project Leader\" },\n];\n\ninterface ProjectOption {\n id: string;\n name: string;\n}\ninterface ProjectOptionGroup {\n id: string;\n name: string;\n options: ProjectOption[];\n}\n\nconst projectOptionId = (project: PickerProject): string => `p${project.id}`;\n\n/** A small deterministic set of project option ids — seeds a custom\n portfolio's edit dialog so the picker reads as an existing selection. */\nexport const sampleProjectOptionIds = (count: number): string[] =>\n PICKER_PROJECTS.slice(0, Math.max(0, count)).map(projectOptionId);\n\nconst toProjectOptions = (projects: PickerProject[]): ProjectOption[] =>\n projects\n .map((project) => ({ id: projectOptionId(project), name: project.name }))\n .sort((a, b) => a.name.localeCompare(b.name));\n\n/* Build the grouped option tree the Select expects. Alphabetical rows and\n groups; the \"Without ...\" / \"Other\" bucket sits last; the Favorites grouping\n collapses to a flat list when it is the only group (as the app's does). */\nconst groupPickerProjects = (\n groupBy: GroupBy\n): ProjectOption[] | ProjectOptionGroup[] => {\n if (groupBy === \"favorites\") {\n const favorite = PICKER_PROJECTS.filter((project) => project.favorite);\n const other = PICKER_PROJECTS.filter((project) => !project.favorite);\n const groups: ProjectOptionGroup[] = [];\n if (favorite.length) {\n groups.push({\n id: \"g-fav\",\n name: \"Favorite\",\n options: toProjectOptions(favorite),\n });\n }\n if (other.length) {\n groups.push({\n id: \"g-other\",\n name: \"Other\",\n options: toProjectOptions(other),\n });\n }\n return groups.length === 1 ? groups[0].options : groups;\n }\n\n const field: keyof PickerProject =\n groupBy === \"labels\"\n ? \"label\"\n : groupBy === \"companies\"\n ? \"client\"\n : groupBy === \"categories\"\n ? \"category\"\n : \"leader\";\n const without =\n groupBy === \"labels\"\n ? \"Without Label\"\n : groupBy === \"companies\"\n ? \"Without Client\"\n : groupBy === \"categories\"\n ? \"Without Category\"\n : \"Without Leader\";\n\n const buckets = new Map<string, PickerProject[]>();\n PICKER_PROJECTS.forEach((project) => {\n const key = (project[field] as string) || without;\n if (!buckets.has(key)) {\n buckets.set(key, []);\n }\n buckets.get(key)?.push(project);\n });\n\n return Array.from(buckets.entries())\n .map(([name, projects]) => ({\n id: `g-${name}`,\n name,\n options: toProjectOptions(projects),\n }))\n .sort((a, b) =>\n a.name === without\n ? 1\n : b.name === without\n ? -1\n : a.name.localeCompare(b.name)\n );\n};\n\n/* ------------------------------------------------------------------ */\n/* Type + visibility option copy */\n/* ------------------------------------------------------------------ */\n\nexport const PORTFOLIO_TYPES: {\n id: PortfolioKind;\n title: string;\n description: string;\n}[] = [\n {\n id: \"custom\",\n title: \"Custom Portfolio\",\n description: \"The projects you pick by hand. Nothing joins automatically.\",\n },\n {\n id: \"client\",\n title: \"Client Portfolio\",\n description:\n \"All projects for a client company. New ones join automatically.\",\n },\n {\n id: \"leader\",\n title: \"Project Leader Portfolio\",\n description: \"All projects led by a person. New ones join automatically.\",\n },\n {\n id: \"category\",\n title: \"Category Portfolio\",\n description:\n \"All projects in a project category. New ones join automatically.\",\n },\n];\n\nexport const VISIBILITY_OPTIONS: {\n id: PortfolioVisibility;\n title: string;\n description: string;\n}[] = [\n {\n id: \"everyone\",\n title: \"Visible to Everyone\",\n description:\n \"Anyone who can use portfolios sees this one. They still only see the projects they already have access to.\",\n },\n {\n id: \"me\",\n title: \"Visible Only to Me\",\n description: \"Nobody else sees this portfolio.\",\n },\n];\n\nexport const contextFieldLabel = (type: PortfolioKind): string =>\n type === \"custom\"\n ? \"Projects\"\n : type === \"category\"\n ? \"Category\"\n : type === \"client\"\n ? \"Client\"\n : \"Project Leader\";\n\nexport const leaderShortName = (name: string): string =>\n LEADERS_LIST.find((leader) => leader.name === name)?.short ?? name;\n\n/* Default names: \"{Category} Projects\", \"{Client} Projects\", \"Lead by {N.}\". */\nexport const defaultPortfolioName = (\n type: PortfolioKind,\n context: string\n): string => {\n if (!context) return \"\";\n if (type === \"category\" || type === \"client\") return `${context} Projects`;\n if (type === \"leader\") return `Lead by ${leaderShortName(context)}`;\n return \"\";\n};\n\n/* ------------------------------------------------------------------ */\n/* Validation (shared by create step 2 and the edit dialog) */\n/* ------------------------------------------------------------------ */\n\n/** Name is required; a custom portfolio needs at least one project, a context\n portfolio needs its context chosen. Same rule for create and edit. */\nexport const isPortfolioDetailsValid = (values: PortfolioFormValues): boolean =>\n values.name.trim().length > 0 &&\n (values.type === \"custom\"\n ? values.projectIds.length > 0\n : Boolean(values.context));\n\n/* ------------------------------------------------------------------ */\n/* Pickers */\n/* ------------------------------------------------------------------ */\n\n/* Group-by control: the SortGeneralIcon button the Invite-to-Projects picker\n shows as the search bar's right-side adornment. Controls grouping, not sort. */\nconst ProjectsGroupBy = ({\n selected,\n onChange,\n}: {\n selected: GroupBy;\n onChange: (groupBy: GroupBy) => void;\n}): ReactElement => (\n <Select\n keepSameOptionsOrder\n disableSearch\n disabledInternalSort\n forceCloseMenu\n position=\"bottom-end\"\n selected={selected}\n onChange={(value) => onChange(value as GroupBy)}\n options={GROUP_BY_OPTIONS}\n target={\n <IconButton type=\"button\" variant=\"text gray\">\n <SortGeneralIcon />\n </IconButton>\n }\n />\n);\n\nconst ProjectsPicker = ({\n selected,\n onChange,\n groupBy,\n onGroupBy,\n invalid,\n}: {\n selected: string[];\n onChange: (ids: string[]) => void;\n groupBy: GroupBy;\n onGroupBy: (groupBy: GroupBy) => void;\n invalid?: boolean;\n}): ReactElement => {\n const options = useMemo(() => groupPickerProjects(groupBy), [groupBy]);\n const count = selected.length;\n const triggerText =\n count === 0\n ? \"Choose projects\"\n : count === 1\n ? \"1 project selected\"\n : `${count} projects selected`;\n return (\n <Select\n type=\"multiple\"\n options={options}\n selected={selected}\n onChange={(value) => onChange(value as string[])}\n noResultText=\"No results\"\n endAdornment={<ProjectsGroupBy selected={groupBy} onChange={onGroupBy} />}\n target={\n <SelectTrigger\n id=\"pf-projects\"\n className=\"pf-trigger\"\n invalid={invalid}\n typographyProps={{ color: count > 0 ? \"primary\" : \"quaternary\" }}\n >\n {triggerText}\n </SelectTrigger>\n }\n />\n );\n};\n\nconst ContextPicker = ({\n type,\n value,\n onChange,\n invalid,\n}: {\n type: PortfolioKind;\n value?: string;\n onChange: (value: string) => void;\n invalid?: boolean;\n}): ReactElement => {\n const options =\n type === \"category\"\n ? CATEGORIES.map((name) => ({ id: name, name }))\n : type === \"client\"\n ? CLIENTS.map((name) => ({ id: name, name }))\n : LEADERS_LIST.map((leader) => ({ id: leader.name, name: leader.name }));\n const placeholder =\n type === \"category\"\n ? \"Choose a category\"\n : type === \"client\"\n ? \"Choose a client\"\n : \"Choose a project leader\";\n return (\n <Select\n forceCloseMenu\n options={options}\n selected={value ?? \"\"}\n onChange={(next) => onChange(String(next))}\n target={\n <SelectTrigger\n id=\"pf-context\"\n className=\"pf-trigger\"\n invalid={invalid}\n typographyProps={{ color: value ? \"primary\" : \"quaternary\" }}\n >\n {value ?? placeholder}\n </SelectTrigger>\n }\n />\n );\n};\n\n/* ------------------------------------------------------------------ */\n/* The reusable form body */\n/* ------------------------------------------------------------------ */\n\nconst StyledDetailsForm = styled.div`\n display: flex;\n flex-direction: column;\n gap: 24px;\n\n .field {\n display: flex;\n flex-direction: column;\n gap: 8px;\n }\n\n /* DS form controls are fixed-width (Input 360px, SelectTrigger 300px); let\n them fill the dialog column instead. */\n .field .c-input-wrapper {\n width: 100%;\n }\n\n .field .pf-trigger {\n width: 100%;\n }\n`;\n\nexport interface PortfolioDetailsFieldsProps {\n values: PortfolioFormValues;\n onName: (value: string) => void;\n onContext: (value: string) => void;\n onProjects: (ids: string[]) => void;\n onGroupBy: (groupBy: GroupBy) => void;\n onVisibility: (value: PortfolioVisibility) => void;\n /* Form pattern (propagating through the app): the submit button is ALWAYS\n enabled. On submit the consumer flips showErrors; each field then outlines\n itself (aria-invalid) while it is invalid, and clears once it becomes\n valid. No field disables submit. */\n showErrors: boolean;\n}\n\n/** Name + the type's picker + visibility. No Dialog wrappers and no action\n button — the consumer (create step or edit dialog) supplies those. */\nexport const PortfolioDetailsFields = ({\n values,\n onName,\n onContext,\n onProjects,\n onGroupBy,\n onVisibility,\n showErrors,\n}: PortfolioDetailsFieldsProps): ReactElement => {\n const { type, name, context, projectIds, groupBy, visibility } = values;\n const nameInvalid = showErrors && name.trim().length === 0;\n const pickerInvalid =\n showErrors && (type === \"custom\" ? projectIds.length === 0 : !context);\n\n return (\n <StyledDetailsForm>\n <div className=\"field\">\n <Label htmlFor=\"pf-name\">Name</Label>\n <Input\n id=\"pf-name\"\n value={name}\n placeholder=\"Portfolio name\"\n invalid={nameInvalid}\n onChange={(event) => onName(event.target.value)}\n />\n </div>\n <div className=\"field\">\n <Label htmlFor={type === \"custom\" ? \"pf-projects\" : \"pf-context\"}>\n {contextFieldLabel(type)}\n </Label>\n {type === \"custom\" ? (\n <ProjectsPicker\n selected={projectIds}\n onChange={onProjects}\n groupBy={groupBy}\n onGroupBy={onGroupBy}\n invalid={pickerInvalid}\n />\n ) : (\n <ContextPicker\n type={type}\n value={context}\n onChange={onContext}\n invalid={pickerInvalid}\n />\n )}\n </div>\n <div className=\"field\">\n <RadioGroup\n label=\"Visibility\"\n variant=\"plain\"\n value={visibility}\n onChange={(value) => onVisibility(value as PortfolioVisibility)}\n options={VISIBILITY_OPTIONS.map((option) => ({\n id: option.id,\n name: option.title,\n description: option.description,\n }))}\n />\n </div>\n </StyledDetailsForm>\n );\n};\n\nPortfolioDetailsFields.displayName = \"PortfolioDetailsFields\";\n\n/* ------------------------------------------------------------------ */\n/* Edit Portfolio dialog — the create wizard's step 2, on its own */\n/* ------------------------------------------------------------------ */\n\nexport interface EditPortfolioDialogProps {\n open: boolean;\n /** The portfolio's current values; the dialog seeds itself from these on\n open, so Cancel discards edits and Save commits them. */\n initialValues: PortfolioFormValues;\n onClose: () => void;\n onSave?: (values: PortfolioFormValues) => void;\n}\n\n/*\n Same fields, same validation as create step 2. The type is fixed to the\n portfolio's kind (edit changes the details, not the kind), so there is no\n type radio here — only the name, the type's picker, and visibility.\n*/\nexport const EditPortfolioDialog = ({\n open,\n initialValues,\n onClose,\n onSave,\n}: EditPortfolioDialogProps): ReactElement => {\n const [values, setValues] = useState<PortfolioFormValues>(initialValues);\n const [showErrors, setShowErrors] = useState(false);\n\n /* Re-seed from the portfolio each time the dialog opens. */\n useEffect(() => {\n if (open) {\n setValues(initialValues);\n setShowErrors(false);\n }\n // Seed on open only — initialValues is read at that moment by design.\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [open]);\n\n const patch = (next: Partial<PortfolioFormValues>): void =>\n setValues((current) => ({ ...current, ...next }));\n\n const handleSave = (): void => {\n if (!isPortfolioDetailsValid(values)) {\n setShowErrors(true);\n return;\n }\n onSave?.(values);\n onClose();\n };\n\n return (\n <Dialog open={open} onClose={onClose} disableCloseOnEsc>\n <Dialog.Title>Edit Portfolio</Dialog.Title>\n <Dialog.ContentDivider />\n <Dialog.Content>\n <PortfolioDetailsFields\n values={values}\n onName={(name) => patch({ name })}\n onContext={(context) => patch({ context })}\n onProjects={(projectIds) => patch({ projectIds })}\n onGroupBy={(groupBy) => patch({ groupBy })}\n onVisibility={(visibility) => patch({ visibility })}\n showErrors={showErrors}\n />\n </Dialog.Content>\n <Dialog.ContentDivider />\n <Dialog.Actions>\n <Button\n variant=\"primary\"\n style={{ marginRight: \"12px\" }}\n onClick={handleSave}\n >\n Save Changes\n </Button>\n <Button variant=\"secondary\" data-action=\"cancel\" onClick={onClose}>\n Cancel\n </Button>\n </Dialog.Actions>\n </Dialog>\n );\n};\n\nEditPortfolioDialog.displayName = \"EditPortfolioDialog\";\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"portfolioDetails.js","names":["_react","_interopRequireWildcard","require","_styledComponents","_interopRequireDefault","_Button","_Dialog","_IconButton","_Icons","_Input","_Label","_RadioGroup","_Select","_SelectTrigger","_Typography","e","__esModule","default","t","WeakMap","r","n","o","i","f","__proto__","has","get","set","_t","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","ownKeys","keys","getOwnPropertySymbols","filter","enumerable","push","apply","_objectSpread","arguments","length","forEach","_defineProperty","getOwnPropertyDescriptors","defineProperties","_toPropertyKey","value","configurable","writable","_toPrimitive","Symbol","toPrimitive","TypeError","String","Number","_slicedToArray","_arrayWithHoles","_iterableToArrayLimit","_unsupportedIterableToArray","_nonIterableRest","a","_arrayLikeToArray","toString","slice","constructor","name","Array","from","test","l","iterator","u","next","done","return","isArray","DEFAULT_PORTFOLIO_FORM_VALUES","exports","type","context","undefined","projectIds","groupBy","visibility","LEADERS_LIST","short","CATEGORIES","CLIENTS","PICKER_PROJECTS","id","client","category","label","leader","favorite","GROUP_BY_OPTIONS","projectOptionId","project","concat","sampleProjectOptionIds","count","Math","max","map","toProjectOptions","projects","sort","b","localeCompare","groupPickerProjects","other","groups","options","field","without","buckets","Map","_buckets$get","key","entries","_ref","_ref2","PORTFOLIO_TYPES","title","description","VISIBILITY_OPTIONS","contextFieldLabel","leaderShortName","_LEADERS_LIST$find$sh","_LEADERS_LIST$find","find","defaultPortfolioName","isPortfolioDetailsValid","values","trim","Boolean","PORTFOLIO_PROJECTS_LOCKED_NOTE","completedProjectsNote","ProjectsGroupBy","_ref3","selected","onChange","createElement","Select","keepSameOptionsOrder","disableSearch","disabledInternalSort","forceCloseMenu","position","target","IconButton","variant","SortGeneralIcon","ProjectsPicker","_ref4","onGroupBy","invalid","disabled","_ref4$triggerId","triggerId","useMemo","triggerText","noResultText","endAdornment","SelectTrigger","className","typographyProps","color","ContextPicker","_ref5","placeholder","StyledDetailsForm","styled","div","withConfig","displayName","componentId","PortfolioDetailsFields","_ref6","onName","onContext","onProjects","onVisibility","showErrors","projectsLocked","completedProjectsCount","nameInvalid","pickerInvalid","Label","htmlFor","Input","event","Fragment","Caption1","RadioGroup","option","EditPortfolioDialog","_ref7","open","initialValues","onClose","onSave","_useState","useState","_useState2","setValues","_useState3","_useState4","setShowErrors","useEffect","patch","current","handleSave","Dialog","disableCloseOnEsc","Title","ContentDivider","Content","Actions","Button","style","marginRight","onClick"],"sources":["../../../../src/presentation/shared/portfolioDetails.tsx"],"sourcesContent":["import React, { ReactElement, useEffect, useMemo, useState } from \"react\";\n\nimport styled from \"styled-components\";\n\nimport { Button } from \"../../components/Button\";\nimport { Dialog } from \"../../components/Dialog\";\nimport { IconButton } from \"../../components/IconButton\";\nimport { SortGeneralIcon } from \"../../components/Icons\";\nimport { Input } from \"../../components/Input\";\nimport { Label } from \"../../components/Label\";\nimport { RadioGroup } from \"../../components/RadioGroup\";\nimport { Select } from \"../../components/Select\";\nimport { SelectTrigger } from \"../../components/SelectTrigger\";\nimport { Caption1 } from \"../../components/Typography\";\n\n/*\n Portfolio details form — the shared \"step 2\" of the Create Portfolio wizard,\n reused verbatim as the Edit Portfolio dialog.\n\n This mirrors a pattern used across the app: the fields that make up the final\n step of a creation wizard are the same fields shown, later, when the object is\n edited. So the form body (name, the type's picker, visibility) and its\n validation live here once, and two consumers render it:\n\n - The Create Portfolio wizard (PortfoliosList.stories.tsx) renders\n <PortfolioDetailsFields> inside its step-2 <Dialog.Content>, with a\n \"Create Portfolio\" action.\n - <EditPortfolioDialog> (opened from PortfolioOptionsMenu's Edit item)\n renders the SAME <PortfolioDetailsFields> inside a standalone <Dialog>,\n with a \"Save Changes\" action.\n\n Both use isPortfolioDetailsValid() and the same always-enabled-submit,\n outline-on-submit validation rule.\n*/\n\n/* ------------------------------------------------------------------ */\n/* Domain types */\n/* ------------------------------------------------------------------ */\n\n/** How a portfolio decides its members (two kinds, three context types). */\nexport type PortfolioKind = \"custom\" | \"category\" | \"client\" | \"leader\";\n\nexport type PortfolioVisibility = \"everyone\" | \"me\";\n\n/** Grouping of the projects multi-select — matches Invite-to-Projects. */\nexport type GroupBy =\n | \"favorites\"\n | \"labels\"\n | \"companies\"\n | \"categories\"\n | \"leaders\";\n\n/** The editable shape shared by create step 2 and the edit dialog. */\nexport interface PortfolioFormValues {\n type: PortfolioKind;\n name: string;\n /** For context portfolios: the chosen category / client / leader. */\n context?: string;\n /** For custom portfolios: the hand-picked project option ids. */\n projectIds: string[];\n groupBy: GroupBy;\n visibility: PortfolioVisibility;\n}\n\n/** A blank custom portfolio — the fallback seed for the edit dialog. */\nexport const DEFAULT_PORTFOLIO_FORM_VALUES: PortfolioFormValues = {\n type: \"custom\",\n name: \"\",\n context: undefined,\n projectIds: [],\n groupBy: \"favorites\",\n visibility: \"everyone\",\n};\n\n/* ------------------------------------------------------------------ */\n/* Pickers' mock data */\n/* ------------------------------------------------------------------ */\n\nexport interface PickerLeader {\n name: string;\n /** Short \"Firstname L.\" form used in the default portfolio name. */\n short: string;\n}\n\nexport const LEADERS_LIST: PickerLeader[] = [\n { name: \"Theo Brandt\", short: \"Theo B.\" },\n { name: \"Isabel Cortez\", short: \"Isabel C.\" },\n { name: \"Grace Bauer\", short: \"Grace B.\" },\n { name: \"Noah Mercer\", short: \"Noah M.\" },\n];\n\nexport const CATEGORIES = [\n \"Brand & Identity\",\n \"Web & Product\",\n \"Marketing\",\n \"Internal Ops\",\n];\n\nexport const CLIENTS = [\n \"Aperture Studio\",\n \"Orbit Telecom\",\n \"Northwind Traders\",\n \"Meridian Health\",\n];\n\nexport interface PickerProject {\n id: number;\n name: string;\n client: string;\n category: string;\n label: string;\n leader: string;\n favorite: boolean;\n}\n\nexport const PICKER_PROJECTS: PickerProject[] = [\n {\n id: 1,\n name: \"Website Redesign\",\n client: \"Aperture Studio\",\n category: \"Web & Product\",\n label: \"Design\",\n leader: \"Theo Brandt\",\n favorite: true,\n },\n {\n id: 2,\n name: \"Brand Refresh\",\n client: \"Aperture Studio\",\n category: \"Brand & Identity\",\n label: \"Design\",\n leader: \"Isabel Cortez\",\n favorite: true,\n },\n {\n id: 3,\n name: \"Mobile App\",\n client: \"Orbit Telecom\",\n category: \"Web & Product\",\n label: \"Build\",\n leader: \"Grace Bauer\",\n favorite: false,\n },\n {\n id: 4,\n name: \"Q3 Campaign\",\n client: \"Orbit Telecom\",\n category: \"Marketing\",\n label: \"Campaign\",\n leader: \"Noah Mercer\",\n favorite: true,\n },\n {\n id: 5,\n name: \"Internal Wiki\",\n client: \"\",\n category: \"Internal Ops\",\n label: \"\",\n leader: \"Theo Brandt\",\n favorite: false,\n },\n {\n id: 6,\n name: \"Packaging System\",\n client: \"Northwind Traders\",\n category: \"Brand & Identity\",\n label: \"Design\",\n leader: \"Isabel Cortez\",\n favorite: false,\n },\n {\n id: 7,\n name: \"Support Portal\",\n client: \"Meridian Health\",\n category: \"Web & Product\",\n label: \"Build\",\n leader: \"Grace Bauer\",\n favorite: false,\n },\n {\n id: 8,\n name: \"Annual Report\",\n client: \"Northwind Traders\",\n category: \"Marketing\",\n label: \"Campaign\",\n leader: \"Noah Mercer\",\n favorite: true,\n },\n];\n\n/* Group-by options and default match the Invite-to-Projects picker exactly. */\nconst GROUP_BY_OPTIONS: { id: GroupBy; name: string }[] = [\n { id: \"favorites\", name: \"Favorites\" },\n { id: \"labels\", name: \"Label\" },\n { id: \"companies\", name: \"Client\" },\n { id: \"categories\", name: \"Category\" },\n { id: \"leaders\", name: \"Project Leader\" },\n];\n\ninterface ProjectOption {\n id: string;\n name: string;\n}\ninterface ProjectOptionGroup {\n id: string;\n name: string;\n options: ProjectOption[];\n}\n\nconst projectOptionId = (project: PickerProject): string => `p${project.id}`;\n\n/** A small deterministic set of project option ids — seeds a custom\n portfolio's edit dialog so the picker reads as an existing selection. */\nexport const sampleProjectOptionIds = (count: number): string[] =>\n PICKER_PROJECTS.slice(0, Math.max(0, count)).map(projectOptionId);\n\nconst toProjectOptions = (projects: PickerProject[]): ProjectOption[] =>\n projects\n .map((project) => ({ id: projectOptionId(project), name: project.name }))\n .sort((a, b) => a.name.localeCompare(b.name));\n\n/* Build the grouped option tree the Select expects. Alphabetical rows and\n groups; the \"Without ...\" / \"Other\" bucket sits last; the Favorites grouping\n collapses to a flat list when it is the only group (as the app's does). */\nconst groupPickerProjects = (\n groupBy: GroupBy\n): ProjectOption[] | ProjectOptionGroup[] => {\n if (groupBy === \"favorites\") {\n const favorite = PICKER_PROJECTS.filter((project) => project.favorite);\n const other = PICKER_PROJECTS.filter((project) => !project.favorite);\n const groups: ProjectOptionGroup[] = [];\n if (favorite.length) {\n groups.push({\n id: \"g-fav\",\n name: \"Favorite\",\n options: toProjectOptions(favorite),\n });\n }\n if (other.length) {\n groups.push({\n id: \"g-other\",\n name: \"Other\",\n options: toProjectOptions(other),\n });\n }\n return groups.length === 1 ? groups[0].options : groups;\n }\n\n const field: keyof PickerProject =\n groupBy === \"labels\"\n ? \"label\"\n : groupBy === \"companies\"\n ? \"client\"\n : groupBy === \"categories\"\n ? \"category\"\n : \"leader\";\n const without =\n groupBy === \"labels\"\n ? \"Without Label\"\n : groupBy === \"companies\"\n ? \"Without Client\"\n : groupBy === \"categories\"\n ? \"Without Category\"\n : \"Without Leader\";\n\n const buckets = new Map<string, PickerProject[]>();\n PICKER_PROJECTS.forEach((project) => {\n const key = (project[field] as string) || without;\n if (!buckets.has(key)) {\n buckets.set(key, []);\n }\n buckets.get(key)?.push(project);\n });\n\n return Array.from(buckets.entries())\n .map(([name, projects]) => ({\n id: `g-${name}`,\n name,\n options: toProjectOptions(projects),\n }))\n .sort((a, b) =>\n a.name === without\n ? 1\n : b.name === without\n ? -1\n : a.name.localeCompare(b.name)\n );\n};\n\n/* ------------------------------------------------------------------ */\n/* Type + visibility option copy */\n/* ------------------------------------------------------------------ */\n\nexport const PORTFOLIO_TYPES: {\n id: PortfolioKind;\n title: string;\n description: string;\n}[] = [\n {\n id: \"custom\",\n title: \"Custom Portfolio\",\n description: \"The projects you pick by hand. Nothing joins automatically.\",\n },\n {\n id: \"client\",\n title: \"Client Portfolio\",\n description:\n \"All projects for a client company. New ones join automatically.\",\n },\n {\n id: \"leader\",\n title: \"Project Leader Portfolio\",\n description: \"All projects led by a person. New ones join automatically.\",\n },\n {\n id: \"category\",\n title: \"Category Portfolio\",\n description:\n \"All projects in a project category. New ones join automatically.\",\n },\n];\n\nexport const VISIBILITY_OPTIONS: {\n id: PortfolioVisibility;\n title: string;\n description: string;\n}[] = [\n {\n id: \"everyone\",\n title: \"Visible to Everyone\",\n description:\n \"Anyone who can use portfolios sees this one. They still only see the projects they already have access to.\",\n },\n {\n id: \"me\",\n title: \"Visible Only to Me\",\n description: \"Nobody else sees this portfolio.\",\n },\n];\n\nexport const contextFieldLabel = (type: PortfolioKind): string =>\n type === \"custom\"\n ? \"Projects\"\n : type === \"category\"\n ? \"Category\"\n : type === \"client\"\n ? \"Client\"\n : \"Project Leader\";\n\nexport const leaderShortName = (name: string): string =>\n LEADERS_LIST.find((leader) => leader.name === name)?.short ?? name;\n\n/* Default names: \"{Category} Projects\", \"{Client} Projects\", \"Lead by {N.}\". */\nexport const defaultPortfolioName = (\n type: PortfolioKind,\n context: string\n): string => {\n if (!context) return \"\";\n if (type === \"category\" || type === \"client\") return `${context} Projects`;\n if (type === \"leader\") return `Lead by ${leaderShortName(context)}`;\n return \"\";\n};\n\n/* ------------------------------------------------------------------ */\n/* Validation (shared by create step 2 and the edit dialog) */\n/* ------------------------------------------------------------------ */\n\n/** Name is required; a custom portfolio needs at least one project, a context\n portfolio needs its context chosen. Same rule for create and edit. */\nexport const isPortfolioDetailsValid = (values: PortfolioFormValues): boolean =>\n values.name.trim().length > 0 &&\n (values.type === \"custom\"\n ? values.projectIds.length > 0\n : Boolean(values.context));\n\n/* Edit-only notes under the projects picker (custom portfolios). */\nexport const PORTFOLIO_PROJECTS_LOCKED_NOTE =\n \"This portfolio includes projects you can't access, so its project list is locked here. Ask an Owner to change it for you.\";\n\nconst completedProjectsNote = (count: number): string =>\n count === 1\n ? \"1 project in this portfolio has been completed, so it isn't shown here. To take it out, use the portfolio's Projects tab.\"\n : `${count} projects in this portfolio have been completed, so they aren't shown here. To take one out, use the portfolio's Projects tab.`;\n\n/* ------------------------------------------------------------------ */\n/* Pickers */\n/* ------------------------------------------------------------------ */\n\n/* Group-by control: the SortGeneralIcon button the Invite-to-Projects picker\n shows as the search bar's right-side adornment. Controls grouping, not sort. */\nconst ProjectsGroupBy = ({\n selected,\n onChange,\n}: {\n selected: GroupBy;\n onChange: (groupBy: GroupBy) => void;\n}): ReactElement => (\n <Select\n keepSameOptionsOrder\n disableSearch\n disabledInternalSort\n forceCloseMenu\n position=\"bottom-end\"\n selected={selected}\n onChange={(value) => onChange(value as GroupBy)}\n options={GROUP_BY_OPTIONS}\n target={\n <IconButton type=\"button\" variant=\"text gray\">\n <SortGeneralIcon />\n </IconButton>\n }\n />\n);\n\nexport interface ProjectsPickerProps {\n selected: string[];\n onChange: (ids: string[]) => void;\n groupBy: GroupBy;\n onGroupBy: (groupBy: GroupBy) => void;\n invalid?: boolean;\n disabled?: boolean;\n /** Overrides the trigger element id (default \"pf-projects\") so the picker\n can be reused on a page that also renders the create/edit form. */\n triggerId?: string;\n}\n\nexport const ProjectsPicker = ({\n selected,\n onChange,\n groupBy,\n onGroupBy,\n invalid,\n disabled,\n triggerId = \"pf-projects\",\n}: ProjectsPickerProps): ReactElement => {\n const options = useMemo(() => groupPickerProjects(groupBy), [groupBy]);\n const count = selected.length;\n const triggerText =\n count === 0\n ? \"Choose projects\"\n : count === 1\n ? \"1 project selected\"\n : `${count} projects selected`;\n return (\n <Select\n type=\"multiple\"\n options={options}\n selected={selected}\n onChange={(value) => onChange(value as string[])}\n noResultText=\"No results\"\n endAdornment={\n disabled ? undefined : (\n <ProjectsGroupBy selected={groupBy} onChange={onGroupBy} />\n )\n }\n target={\n <SelectTrigger\n id={triggerId}\n className=\"pf-trigger\"\n invalid={invalid}\n disabled={disabled}\n typographyProps={{ color: count > 0 ? \"primary\" : \"quaternary\" }}\n >\n {triggerText}\n </SelectTrigger>\n }\n />\n );\n};\n\nconst ContextPicker = ({\n type,\n value,\n onChange,\n invalid,\n}: {\n type: PortfolioKind;\n value?: string;\n onChange: (value: string) => void;\n invalid?: boolean;\n}): ReactElement => {\n const options =\n type === \"category\"\n ? CATEGORIES.map((name) => ({ id: name, name }))\n : type === \"client\"\n ? CLIENTS.map((name) => ({ id: name, name }))\n : LEADERS_LIST.map((leader) => ({ id: leader.name, name: leader.name }));\n const placeholder =\n type === \"category\"\n ? \"Choose a category\"\n : type === \"client\"\n ? \"Choose a client\"\n : \"Choose a project leader\";\n return (\n <Select\n forceCloseMenu\n options={options}\n selected={value ?? \"\"}\n onChange={(next) => onChange(String(next))}\n target={\n <SelectTrigger\n id=\"pf-context\"\n className=\"pf-trigger\"\n invalid={invalid}\n typographyProps={{ color: value ? \"primary\" : \"quaternary\" }}\n >\n {value ?? placeholder}\n </SelectTrigger>\n }\n />\n );\n};\n\n/* ------------------------------------------------------------------ */\n/* The reusable form body */\n/* ------------------------------------------------------------------ */\n\nconst StyledDetailsForm = styled.div`\n display: flex;\n flex-direction: column;\n gap: 24px;\n\n .field {\n display: flex;\n flex-direction: column;\n gap: 8px;\n }\n\n /* DS form controls are fixed-width (Input 360px, SelectTrigger 300px); let\n them fill the dialog column instead. */\n .field .c-input-wrapper {\n width: 100%;\n }\n\n .field .pf-trigger {\n width: 100%;\n }\n`;\n\nexport interface PortfolioDetailsFieldsProps {\n values: PortfolioFormValues;\n onName: (value: string) => void;\n onContext: (value: string) => void;\n onProjects: (ids: string[]) => void;\n onGroupBy: (groupBy: GroupBy) => void;\n onVisibility: (value: PortfolioVisibility) => void;\n /* Form pattern (propagating through the app): the submit button is ALWAYS\n enabled. On submit the consumer flips showErrors; each field then outlines\n itself (aria-invalid) while it is invalid, and clears once it becomes\n valid. No field disables submit. */\n showErrors: boolean;\n /** Edit only: the portfolio holds projects this viewer can't access, so the\n projects picker is locked and a note explains why. */\n projectsLocked?: boolean;\n /** Edit only: how many of the portfolio's projects are completed and so are\n not shown by the picker (which lists active projects only). */\n completedProjectsCount?: number;\n}\n\n/** Name + the type's picker + visibility. No Dialog wrappers and no action\n button — the consumer (create step or edit dialog) supplies those. */\nexport const PortfolioDetailsFields = ({\n values,\n onName,\n onContext,\n onProjects,\n onGroupBy,\n onVisibility,\n showErrors,\n projectsLocked,\n completedProjectsCount,\n}: PortfolioDetailsFieldsProps): ReactElement => {\n const { type, name, context, projectIds, groupBy, visibility } = values;\n const nameInvalid = showErrors && name.trim().length === 0;\n const pickerInvalid =\n showErrors && (type === \"custom\" ? projectIds.length === 0 : !context);\n\n return (\n <StyledDetailsForm>\n <div className=\"field\">\n <Label htmlFor=\"pf-name\">Name</Label>\n <Input\n id=\"pf-name\"\n value={name}\n placeholder=\"Portfolio name\"\n invalid={nameInvalid}\n onChange={(event) => onName(event.target.value)}\n />\n </div>\n <div className=\"field\">\n <Label htmlFor={type === \"custom\" ? \"pf-projects\" : \"pf-context\"}>\n {contextFieldLabel(type)}\n </Label>\n {type === \"custom\" ? (\n <>\n <ProjectsPicker\n selected={projectIds}\n onChange={onProjects}\n groupBy={groupBy}\n onGroupBy={onGroupBy}\n invalid={pickerInvalid}\n disabled={projectsLocked}\n />\n {projectsLocked ? (\n <Caption1 color=\"tertiary\" className=\"pf-note\">\n {PORTFOLIO_PROJECTS_LOCKED_NOTE}\n </Caption1>\n ) : completedProjectsCount ? (\n <Caption1 color=\"tertiary\" className=\"pf-note\">\n {completedProjectsNote(completedProjectsCount)}\n </Caption1>\n ) : null}\n </>\n ) : (\n <ContextPicker\n type={type}\n value={context}\n onChange={onContext}\n invalid={pickerInvalid}\n />\n )}\n </div>\n <div className=\"field\">\n <RadioGroup\n label=\"Visibility\"\n variant=\"plain\"\n value={visibility}\n onChange={(value) => onVisibility(value as PortfolioVisibility)}\n options={VISIBILITY_OPTIONS.map((option) => ({\n id: option.id,\n name: option.title,\n description: option.description,\n }))}\n />\n </div>\n </StyledDetailsForm>\n );\n};\n\nPortfolioDetailsFields.displayName = \"PortfolioDetailsFields\";\n\n/* ------------------------------------------------------------------ */\n/* Edit Portfolio dialog — the create wizard's step 2, on its own */\n/* ------------------------------------------------------------------ */\n\nexport interface EditPortfolioDialogProps {\n open: boolean;\n /** The portfolio's current values; the dialog seeds itself from these on\n open, so Cancel discards edits and Save commits them. */\n initialValues: PortfolioFormValues;\n onClose: () => void;\n onSave?: (values: PortfolioFormValues) => void;\n /** Edit only: lock the projects picker (the portfolio has projects this\n viewer can't access). */\n projectsLocked?: boolean;\n /** Edit only: number of completed projects the picker does not show. */\n completedProjectsCount?: number;\n}\n\n/*\n Same fields, same validation as create step 2. The type is fixed to the\n portfolio's kind (edit changes the details, not the kind), so there is no\n type radio here — only the name, the type's picker, and visibility.\n*/\nexport const EditPortfolioDialog = ({\n open,\n initialValues,\n onClose,\n onSave,\n projectsLocked,\n completedProjectsCount,\n}: EditPortfolioDialogProps): ReactElement => {\n const [values, setValues] = useState<PortfolioFormValues>(initialValues);\n const [showErrors, setShowErrors] = useState(false);\n\n /* Re-seed from the portfolio each time the dialog opens. */\n useEffect(() => {\n if (open) {\n setValues(initialValues);\n setShowErrors(false);\n }\n // Seed on open only — initialValues is read at that moment by design.\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [open]);\n\n const patch = (next: Partial<PortfolioFormValues>): void =>\n setValues((current) => ({ ...current, ...next }));\n\n const handleSave = (): void => {\n if (!isPortfolioDetailsValid(values)) {\n setShowErrors(true);\n return;\n }\n onSave?.(values);\n onClose();\n };\n\n return (\n <Dialog open={open} onClose={onClose} disableCloseOnEsc>\n <Dialog.Title>Edit Portfolio</Dialog.Title>\n <Dialog.ContentDivider />\n <Dialog.Content>\n <PortfolioDetailsFields\n values={values}\n onName={(name) => patch({ name })}\n onContext={(context) => patch({ context })}\n onProjects={(projectIds) => patch({ projectIds })}\n onGroupBy={(groupBy) => patch({ groupBy })}\n onVisibility={(visibility) => patch({ visibility })}\n showErrors={showErrors}\n projectsLocked={projectsLocked}\n completedProjectsCount={completedProjectsCount}\n />\n </Dialog.Content>\n <Dialog.ContentDivider />\n <Dialog.Actions>\n <Button\n variant=\"primary\"\n style={{ marginRight: \"12px\" }}\n onClick={handleSave}\n >\n Save Changes\n </Button>\n <Button variant=\"secondary\" data-action=\"cancel\" onClick={onClose}>\n Cancel\n </Button>\n </Dialog.Actions>\n </Dialog>\n );\n};\n\nEditPortfolioDialog.displayName = \"EditPortfolioDialog\";\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
/**
|
|
3
|
+
* @component ClipboardIcon
|
|
4
|
+
* @description
|
|
5
|
+
*
|
|
6
|
+
* The ClipboardIcon component displays a clipboard to represent a clipboard, notes, or a task list.
|
|
7
|
+
* The Icon component is
|
|
8
|
+
* customizable, allowing for variations in size, color, and style to fit the needs of the application.
|
|
9
|
+
*
|
|
10
|
+
* @prop {string} [gradient] - Optional CSS linear-gradient string to apply a custom fill.
|
|
11
|
+
* Format: "linear-gradient(<angle>deg, <color1>, <color2>, ...)"
|
|
12
|
+
*
|
|
13
|
+
* @example
|
|
14
|
+
* return (
|
|
15
|
+
* <ClipboardIcon gradient="linear-gradient(135deg, #4da2ed, #f72222)" />
|
|
16
|
+
* )
|
|
17
|
+
*
|
|
18
|
+
* @example
|
|
19
|
+
* return (
|
|
20
|
+
* <ClipboardIcon className="mr-2" />
|
|
21
|
+
* )
|
|
22
|
+
*
|
|
23
|
+
* @see
|
|
24
|
+
* https://system.activecollab.com/?path=/story/foundation-icons-icons--icons
|
|
25
|
+
* @see
|
|
26
|
+
* https://design.activecollab.com/docs/foundations/icons
|
|
27
|
+
*/
|
|
28
|
+
declare const ClipboardIcon: React.ForwardRefExoticComponent<Omit<React.SVGProps<SVGSVGElement> & {
|
|
29
|
+
gradient?: string;
|
|
30
|
+
}, "ref"> & React.RefAttributes<SVGSVGElement>>;
|
|
31
|
+
export default ClipboardIcon;
|
|
32
|
+
//# sourceMappingURL=ClipboardIcon.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ClipboardIcon.d.ts","sourceRoot":"","sources":["../../../../../src/components/Icons/collection/ClipboardIcon.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAI1B;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,QAAA,MAAM,aAAa;eAMF,MAAM;+CA4BtB,CAAC;AAEF,eAAe,aAAa,CAAC"}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
import _extends from "@babel/runtime/helpers/esm/extends";
|
|
2
|
+
import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/esm/objectWithoutPropertiesLoose";
|
|
3
|
+
const _excluded = ["gradient"];
|
|
4
|
+
import React from "react";
|
|
5
|
+
import { GradientDefs } from "../../GradientDefs";
|
|
6
|
+
|
|
7
|
+
/**
|
|
8
|
+
* @component ClipboardIcon
|
|
9
|
+
* @description
|
|
10
|
+
*
|
|
11
|
+
* The ClipboardIcon component displays a clipboard to represent a clipboard, notes, or a task list.
|
|
12
|
+
* The Icon component is
|
|
13
|
+
* customizable, allowing for variations in size, color, and style to fit the needs of the application.
|
|
14
|
+
*
|
|
15
|
+
* @prop {string} [gradient] - Optional CSS linear-gradient string to apply a custom fill.
|
|
16
|
+
* Format: "linear-gradient(<angle>deg, <color1>, <color2>, ...)"
|
|
17
|
+
*
|
|
18
|
+
* @example
|
|
19
|
+
* return (
|
|
20
|
+
* <ClipboardIcon gradient="linear-gradient(135deg, #4da2ed, #f72222)" />
|
|
21
|
+
* )
|
|
22
|
+
*
|
|
23
|
+
* @example
|
|
24
|
+
* return (
|
|
25
|
+
* <ClipboardIcon className="mr-2" />
|
|
26
|
+
* )
|
|
27
|
+
*
|
|
28
|
+
* @see
|
|
29
|
+
* https://system.activecollab.com/?path=/story/foundation-icons-icons--icons
|
|
30
|
+
* @see
|
|
31
|
+
* https://design.activecollab.com/docs/foundations/icons
|
|
32
|
+
*/
|
|
33
|
+
const ClipboardIcon = /*#__PURE__*/React.forwardRef((_ref, ref) => {
|
|
34
|
+
let gradient = _ref.gradient,
|
|
35
|
+
props = _objectWithoutPropertiesLoose(_ref, _excluded);
|
|
36
|
+
return /*#__PURE__*/React.createElement("svg", _extends({
|
|
37
|
+
xmlns: "http://www.w3.org/2000/svg",
|
|
38
|
+
width: 24,
|
|
39
|
+
height: 24,
|
|
40
|
+
viewBox: "0 0 24 24",
|
|
41
|
+
"data-testid": "ClipboardIcon",
|
|
42
|
+
fill: gradient ? "url(#icon-gradient)" : props != null && props.fill ? props.fill : "var(--color-theme-600)",
|
|
43
|
+
focusable: false,
|
|
44
|
+
ref: ref
|
|
45
|
+
}, props), /*#__PURE__*/React.createElement(GradientDefs, {
|
|
46
|
+
gradient: gradient
|
|
47
|
+
}), /*#__PURE__*/React.createElement("path", {
|
|
48
|
+
fillRule: "evenodd",
|
|
49
|
+
d: "M10.35 1.91L9.79 2.08L9.34 2.45L9.06 2.96L9.00 3.50L6.91 3.56L6.35 3.73L5.83 4.01L5.38 4.38L5.01 4.83L4.63 5.63L4.50 6.50L4.50 18.00L4.56 18.59L4.73 19.15L5.18 19.90L5.83 20.49L6.63 20.87L7.21 20.99L16.50 21.00L17.09 20.94L17.65 20.77L18.17 20.49L18.82 19.90L19.27 19.15L19.49 18.29L19.50 6.50L19.44 5.91L19.27 5.35L18.99 4.83L18.62 4.38L18.17 4.01L17.65 3.73L16.79 3.51L15.00 3.50L14.94 2.96L14.75 2.57L14.45 2.24L14.07 2.01L13.50 1.90L10.35 1.91ZM16.41 5.66L16.78 5.84L17.08 6.11L17.29 6.46L17.39 6.86L17.40 17.50L17.34 17.91L17.16 18.28L16.66 18.73L16.00 18.90L8.00 18.90L7.59 18.84L7.22 18.66L6.77 18.16L6.60 17.50L6.60 7.00L6.66 6.59L6.84 6.22L7.22 5.84L7.86 5.61L16.00 5.60L16.41 5.66ZM11.20 3.70L10.88 3.59L10.71 3.30L10.76 2.96L11.05 2.72L12.90 2.71L13.12 2.81L13.28 3.05L13.24 3.44L12.95 3.68L11.20 3.70Z"
|
|
50
|
+
}));
|
|
51
|
+
});
|
|
52
|
+
ClipboardIcon.displayName = "ClipboardIcon";
|
|
53
|
+
export default ClipboardIcon;
|
|
54
|
+
//# sourceMappingURL=ClipboardIcon.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ClipboardIcon.js","names":["React","GradientDefs","ClipboardIcon","forwardRef","_ref","ref","gradient","props","_objectWithoutPropertiesLoose","_excluded","createElement","_extends","xmlns","width","height","viewBox","fill","focusable","fillRule","d","displayName"],"sources":["../../../../../src/components/Icons/collection/ClipboardIcon.tsx"],"sourcesContent":["import React from \"react\";\n\nimport { GradientDefs } from \"../../GradientDefs\";\n\n/**\n * @component ClipboardIcon\n * @description\n *\n * The ClipboardIcon component displays a clipboard to represent a clipboard, notes, or a task list.\n * The Icon component is\n * customizable, allowing for variations in size, color, and style to fit the needs of the application.\n *\n * @prop {string} [gradient] - Optional CSS linear-gradient string to apply a custom fill.\n * Format: \"linear-gradient(<angle>deg, <color1>, <color2>, ...)\"\n *\n * @example\n * return (\n * <ClipboardIcon gradient=\"linear-gradient(135deg, #4da2ed, #f72222)\" />\n * )\n *\n * @example\n * return (\n * <ClipboardIcon className=\"mr-2\" />\n * )\n *\n * @see\n * https://system.activecollab.com/?path=/story/foundation-icons-icons--icons\n * @see\n * https://design.activecollab.com/docs/foundations/icons\n */\nconst ClipboardIcon = React.forwardRef(\n (\n {\n gradient,\n ...props\n }: React.SVGProps<SVGSVGElement> & {\n gradient?: string;\n },\n ref?: React.Ref<SVGSVGElement>\n ) => (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width={24}\n height={24}\n viewBox=\"0 0 24 24\"\n data-testid=\"ClipboardIcon\"\n fill={\n gradient\n ? \"url(#icon-gradient)\"\n : props?.fill\n ? props.fill\n : \"var(--color-theme-600)\"\n }\n focusable={false}\n ref={ref}\n {...props}\n >\n <GradientDefs gradient={gradient} />\n <path\n fillRule=\"evenodd\"\n d=\"M10.35 1.91L9.79 2.08L9.34 2.45L9.06 2.96L9.00 3.50L6.91 3.56L6.35 3.73L5.83 4.01L5.38 4.38L5.01 4.83L4.63 5.63L4.50 6.50L4.50 18.00L4.56 18.59L4.73 19.15L5.18 19.90L5.83 20.49L6.63 20.87L7.21 20.99L16.50 21.00L17.09 20.94L17.65 20.77L18.17 20.49L18.82 19.90L19.27 19.15L19.49 18.29L19.50 6.50L19.44 5.91L19.27 5.35L18.99 4.83L18.62 4.38L18.17 4.01L17.65 3.73L16.79 3.51L15.00 3.50L14.94 2.96L14.75 2.57L14.45 2.24L14.07 2.01L13.50 1.90L10.35 1.91ZM16.41 5.66L16.78 5.84L17.08 6.11L17.29 6.46L17.39 6.86L17.40 17.50L17.34 17.91L17.16 18.28L16.66 18.73L16.00 18.90L8.00 18.90L7.59 18.84L7.22 18.66L6.77 18.16L6.60 17.50L6.60 7.00L6.66 6.59L6.84 6.22L7.22 5.84L7.86 5.61L16.00 5.60L16.41 5.66ZM11.20 3.70L10.88 3.59L10.71 3.30L10.76 2.96L11.05 2.72L12.90 2.71L13.12 2.81L13.28 3.05L13.24 3.44L12.95 3.68L11.20 3.70Z\"\n />\n </svg>\n )\n);\nClipboardIcon.displayName = \"ClipboardIcon\";\nexport default ClipboardIcon;\n"],"mappings":";;;AAAA,OAAOA,KAAK,MAAM,OAAO;AAEzB,SAASC,YAAY,QAAQ,oBAAoB;;AAEjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAMC,aAAa,gBAAGF,KAAK,CAACG,UAAU,CACpC,CAAAC,IAAA,EAOEC,GAA8B;EAAA,IAL5BC,QAAQ,GAAAF,IAAA,CAARE,QAAQ;IACLC,KAAK,GAAAC,6BAAA,CAAAJ,IAAA,EAAAK,SAAA;EAAA,oBAMVT,KAAA,CAAAU,aAAA,QAAAC,QAAA;IACEC,KAAK,EAAC,4BAA4B;IAClCC,KAAK,EAAE,EAAG;IACVC,MAAM,EAAE,EAAG;IACXC,OAAO,EAAC,WAAW;IACnB,eAAY,eAAe;IAC3BC,IAAI,EACFV,QAAQ,GACJ,qBAAqB,GACrBC,KAAK,YAALA,KAAK,CAAES,IAAI,GACXT,KAAK,CAACS,IAAI,GACV,wBACL;IACDC,SAAS,EAAE,KAAM;IACjBZ,GAAG,EAAEA;EAAI,GACLE,KAAK,gBAETP,KAAA,CAAAU,aAAA,CAACT,YAAY;IAACK,QAAQ,EAAEA;EAAS,CAAE,CAAC,eACpCN,KAAA,CAAAU,aAAA;IACEQ,QAAQ,EAAC,SAAS;IAClBC,CAAC,EAAC;EAA+yB,CAClzB,CACE,CAAC;AAAA,CAEV,CAAC;AACDjB,aAAa,CAACkB,WAAW,GAAG,eAAe;AAC3C,eAAelB,aAAa","ignoreList":[]}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
/**
|
|
3
|
+
* @component CutIcon
|
|
4
|
+
* @description
|
|
5
|
+
*
|
|
6
|
+
* The CutIcon component displays a pair of scissors to represent a cut action (for example cut to clipboard).
|
|
7
|
+
* The Icon component is
|
|
8
|
+
* customizable, allowing for variations in size, color, and style to fit the needs of the application.
|
|
9
|
+
*
|
|
10
|
+
* @prop {string} [gradient] - Optional CSS linear-gradient string to apply a custom fill.
|
|
11
|
+
* Format: "linear-gradient(<angle>deg, <color1>, <color2>, ...)"
|
|
12
|
+
*
|
|
13
|
+
* @example
|
|
14
|
+
* return (
|
|
15
|
+
* <CutIcon gradient="linear-gradient(135deg, #4da2ed, #f72222)" />
|
|
16
|
+
* )
|
|
17
|
+
*
|
|
18
|
+
* @example
|
|
19
|
+
* return (
|
|
20
|
+
* <CutIcon className="mr-2" />
|
|
21
|
+
* )
|
|
22
|
+
*
|
|
23
|
+
* @see
|
|
24
|
+
* https://system.activecollab.com/?path=/story/foundation-icons-icons--icons
|
|
25
|
+
* @see
|
|
26
|
+
* https://design.activecollab.com/docs/foundations/icons
|
|
27
|
+
*/
|
|
28
|
+
declare const CutIcon: React.ForwardRefExoticComponent<Omit<React.SVGProps<SVGSVGElement> & {
|
|
29
|
+
gradient?: string;
|
|
30
|
+
}, "ref"> & React.RefAttributes<SVGSVGElement>>;
|
|
31
|
+
export default CutIcon;
|
|
32
|
+
//# sourceMappingURL=CutIcon.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CutIcon.d.ts","sourceRoot":"","sources":["../../../../../src/components/Icons/collection/CutIcon.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAI1B;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,QAAA,MAAM,OAAO;eAMI,MAAM;+CA4BtB,CAAC;AAEF,eAAe,OAAO,CAAC"}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
import _extends from "@babel/runtime/helpers/esm/extends";
|
|
2
|
+
import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/esm/objectWithoutPropertiesLoose";
|
|
3
|
+
const _excluded = ["gradient"];
|
|
4
|
+
import React from "react";
|
|
5
|
+
import { GradientDefs } from "../../GradientDefs";
|
|
6
|
+
|
|
7
|
+
/**
|
|
8
|
+
* @component CutIcon
|
|
9
|
+
* @description
|
|
10
|
+
*
|
|
11
|
+
* The CutIcon component displays a pair of scissors to represent a cut action (for example cut to clipboard).
|
|
12
|
+
* The Icon component is
|
|
13
|
+
* customizable, allowing for variations in size, color, and style to fit the needs of the application.
|
|
14
|
+
*
|
|
15
|
+
* @prop {string} [gradient] - Optional CSS linear-gradient string to apply a custom fill.
|
|
16
|
+
* Format: "linear-gradient(<angle>deg, <color1>, <color2>, ...)"
|
|
17
|
+
*
|
|
18
|
+
* @example
|
|
19
|
+
* return (
|
|
20
|
+
* <CutIcon gradient="linear-gradient(135deg, #4da2ed, #f72222)" />
|
|
21
|
+
* )
|
|
22
|
+
*
|
|
23
|
+
* @example
|
|
24
|
+
* return (
|
|
25
|
+
* <CutIcon className="mr-2" />
|
|
26
|
+
* )
|
|
27
|
+
*
|
|
28
|
+
* @see
|
|
29
|
+
* https://system.activecollab.com/?path=/story/foundation-icons-icons--icons
|
|
30
|
+
* @see
|
|
31
|
+
* https://design.activecollab.com/docs/foundations/icons
|
|
32
|
+
*/
|
|
33
|
+
const CutIcon = /*#__PURE__*/React.forwardRef((_ref, ref) => {
|
|
34
|
+
let gradient = _ref.gradient,
|
|
35
|
+
props = _objectWithoutPropertiesLoose(_ref, _excluded);
|
|
36
|
+
return /*#__PURE__*/React.createElement("svg", _extends({
|
|
37
|
+
xmlns: "http://www.w3.org/2000/svg",
|
|
38
|
+
width: 24,
|
|
39
|
+
height: 24,
|
|
40
|
+
viewBox: "0 0 24 24",
|
|
41
|
+
"data-testid": "CutIcon",
|
|
42
|
+
fill: gradient ? "url(#icon-gradient)" : props != null && props.fill ? props.fill : "var(--color-theme-600)",
|
|
43
|
+
focusable: false,
|
|
44
|
+
ref: ref
|
|
45
|
+
}, props), /*#__PURE__*/React.createElement(GradientDefs, {
|
|
46
|
+
gradient: gradient
|
|
47
|
+
}), /*#__PURE__*/React.createElement("path", {
|
|
48
|
+
fillRule: "evenodd",
|
|
49
|
+
d: "M13.15 11.00L13.14 10.84L18.15 3.40L18.25 2.92L18.06 2.46L17.73 2.22L17.40 2.15L17.00 2.25L16.75 2.46L12.00 9.48L7.25 2.46L7.00 2.25L6.68 2.15L6.35 2.19L6.06 2.35L5.77 2.84L5.85 3.40L10.86 10.84L10.85 11.09L8.00 14.74L7.00 14.55L6.17 14.67L5.19 15.20L4.63 15.82L4.20 16.84L4.16 17.68L4.37 18.49L4.98 19.42L5.91 20.03L7.00 20.25L8.09 20.03L9.02 19.42L9.63 18.49L9.84 17.68L9.73 16.57L9.34 15.78L12.00 12.38L14.66 15.78L14.27 16.57L14.16 17.68L14.37 18.49L14.98 19.42L15.91 20.03L17.00 20.25L18.09 20.03L19.02 19.42L19.51 18.74L19.84 17.68L19.73 16.57L19.37 15.82L18.58 15.03L17.83 14.67L17.00 14.55L16.00 14.74L13.15 11.00ZM8.40 17.40L8.29 17.94L7.99 18.39L7.54 18.69L7.00 18.80L6.46 18.69L6.01 18.39L5.71 17.94L5.60 17.40L5.71 16.86L6.01 16.41L6.46 16.11L7.00 16.00L7.54 16.11L7.99 16.41L8.29 16.86L8.40 17.40ZM18.40 17.40L18.29 17.94L17.99 18.39L17.54 18.69L17.00 18.80L16.46 18.69L16.01 18.39L15.71 17.94L15.60 17.40L15.71 16.86L16.01 16.41L16.46 16.11L17.00 16.00L17.54 16.11L17.99 16.41L18.29 16.86L18.40 17.40Z"
|
|
50
|
+
}));
|
|
51
|
+
});
|
|
52
|
+
CutIcon.displayName = "CutIcon";
|
|
53
|
+
export default CutIcon;
|
|
54
|
+
//# sourceMappingURL=CutIcon.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CutIcon.js","names":["React","GradientDefs","CutIcon","forwardRef","_ref","ref","gradient","props","_objectWithoutPropertiesLoose","_excluded","createElement","_extends","xmlns","width","height","viewBox","fill","focusable","fillRule","d","displayName"],"sources":["../../../../../src/components/Icons/collection/CutIcon.tsx"],"sourcesContent":["import React from \"react\";\n\nimport { GradientDefs } from \"../../GradientDefs\";\n\n/**\n * @component CutIcon\n * @description\n *\n * The CutIcon component displays a pair of scissors to represent a cut action (for example cut to clipboard).\n * The Icon component is\n * customizable, allowing for variations in size, color, and style to fit the needs of the application.\n *\n * @prop {string} [gradient] - Optional CSS linear-gradient string to apply a custom fill.\n * Format: \"linear-gradient(<angle>deg, <color1>, <color2>, ...)\"\n *\n * @example\n * return (\n * <CutIcon gradient=\"linear-gradient(135deg, #4da2ed, #f72222)\" />\n * )\n *\n * @example\n * return (\n * <CutIcon className=\"mr-2\" />\n * )\n *\n * @see\n * https://system.activecollab.com/?path=/story/foundation-icons-icons--icons\n * @see\n * https://design.activecollab.com/docs/foundations/icons\n */\nconst CutIcon = React.forwardRef(\n (\n {\n gradient,\n ...props\n }: React.SVGProps<SVGSVGElement> & {\n gradient?: string;\n },\n ref?: React.Ref<SVGSVGElement>\n ) => (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width={24}\n height={24}\n viewBox=\"0 0 24 24\"\n data-testid=\"CutIcon\"\n fill={\n gradient\n ? \"url(#icon-gradient)\"\n : props?.fill\n ? props.fill\n : \"var(--color-theme-600)\"\n }\n focusable={false}\n ref={ref}\n {...props}\n >\n <GradientDefs gradient={gradient} />\n <path\n fillRule=\"evenodd\"\n d=\"M13.15 11.00L13.14 10.84L18.15 3.40L18.25 2.92L18.06 2.46L17.73 2.22L17.40 2.15L17.00 2.25L16.75 2.46L12.00 9.48L7.25 2.46L7.00 2.25L6.68 2.15L6.35 2.19L6.06 2.35L5.77 2.84L5.85 3.40L10.86 10.84L10.85 11.09L8.00 14.74L7.00 14.55L6.17 14.67L5.19 15.20L4.63 15.82L4.20 16.84L4.16 17.68L4.37 18.49L4.98 19.42L5.91 20.03L7.00 20.25L8.09 20.03L9.02 19.42L9.63 18.49L9.84 17.68L9.73 16.57L9.34 15.78L12.00 12.38L14.66 15.78L14.27 16.57L14.16 17.68L14.37 18.49L14.98 19.42L15.91 20.03L17.00 20.25L18.09 20.03L19.02 19.42L19.51 18.74L19.84 17.68L19.73 16.57L19.37 15.82L18.58 15.03L17.83 14.67L17.00 14.55L16.00 14.74L13.15 11.00ZM8.40 17.40L8.29 17.94L7.99 18.39L7.54 18.69L7.00 18.80L6.46 18.69L6.01 18.39L5.71 17.94L5.60 17.40L5.71 16.86L6.01 16.41L6.46 16.11L7.00 16.00L7.54 16.11L7.99 16.41L8.29 16.86L8.40 17.40ZM18.40 17.40L18.29 17.94L17.99 18.39L17.54 18.69L17.00 18.80L16.46 18.69L16.01 18.39L15.71 17.94L15.60 17.40L15.71 16.86L16.01 16.41L16.46 16.11L17.00 16.00L17.54 16.11L17.99 16.41L18.29 16.86L18.40 17.40Z\"\n />\n </svg>\n )\n);\nCutIcon.displayName = \"CutIcon\";\nexport default CutIcon;\n"],"mappings":";;;AAAA,OAAOA,KAAK,MAAM,OAAO;AAEzB,SAASC,YAAY,QAAQ,oBAAoB;;AAEjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAMC,OAAO,gBAAGF,KAAK,CAACG,UAAU,CAC9B,CAAAC,IAAA,EAOEC,GAA8B;EAAA,IAL5BC,QAAQ,GAAAF,IAAA,CAARE,QAAQ;IACLC,KAAK,GAAAC,6BAAA,CAAAJ,IAAA,EAAAK,SAAA;EAAA,oBAMVT,KAAA,CAAAU,aAAA,QAAAC,QAAA;IACEC,KAAK,EAAC,4BAA4B;IAClCC,KAAK,EAAE,EAAG;IACVC,MAAM,EAAE,EAAG;IACXC,OAAO,EAAC,WAAW;IACnB,eAAY,SAAS;IACrBC,IAAI,EACFV,QAAQ,GACJ,qBAAqB,GACrBC,KAAK,YAALA,KAAK,CAAES,IAAI,GACXT,KAAK,CAACS,IAAI,GACV,wBACL;IACDC,SAAS,EAAE,KAAM;IACjBZ,GAAG,EAAEA;EAAI,GACLE,KAAK,gBAETP,KAAA,CAAAU,aAAA,CAACT,YAAY;IAACK,QAAQ,EAAEA;EAAS,CAAE,CAAC,eACpCN,KAAA,CAAAU,aAAA;IACEQ,QAAQ,EAAC,SAAS;IAClBC,CAAC,EAAC;EAAy/B,CAC5/B,CACE,CAAC;AAAA,CAEV,CAAC;AACDjB,OAAO,CAACkB,WAAW,GAAG,SAAS;AAC/B,eAAelB,OAAO","ignoreList":[]}
|