estreui 1.2.3 → 1.2.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,555 @@
1
+ /*
2
+ EstreUI rimwork for MangoEdu @ MP Solutions inc.
3
+
4
+ Author: Estre Soliette
5
+ Established: 2024.06.10
6
+
7
+ NOTE: Required jQuery latest version
8
+
9
+ Visit this rim-work's official site(GitHub)
10
+ https://estreui.mpsolutions.kr
11
+ */
12
+
13
+ // initializing essential states
14
+
15
+ // ======================================================================
16
+ // MODULE: Core -- registries, constants, typedefs
17
+ // ======================================================================
18
+
19
+ // ──────────────────────────────────────────────
20
+ // @typedef — reusable type shapes
21
+ // ──────────────────────────────────────────────
22
+
23
+ /**
24
+ * Intent object passed to page handlers during navigation.
25
+ * Properties vary by page type; the fields below are the common base.
26
+ * @typedef {Object} EstreIntent
27
+ * @property {string} [action] - Intent action identifier.
28
+ * @property {*} [data] - Arbitrary payload. Shape depends on the target page.
29
+ * @property {EstreIntentBringOnBack} [bringOnBack] - Intent to execute when navigating back.
30
+ * @property {EstreIntentAction[]} [onBring] - Actions to run on bring.
31
+ * @property {EstreIntentAction[]} [onOpen] - Actions to run on open.
32
+ * @property {EstreIntentAction[]} [onShow] - Actions to run on show.
33
+ * @property {EstreIntentAction[]} [onFocus] - Actions to run on focus.
34
+ * @property {EstreIntentAction[]} [onIntentUpdated] - Actions to run on intent update.
35
+ * @property {EstreIntentAction[]} [onBlur] - Actions to run on blur.
36
+ * @property {EstreIntentAction[]} [onHide] - Actions to run on hide.
37
+ * @property {EstreIntentAction[]} [onClose] - Actions to run on close.
38
+ * @property {EstreIntentAction[]} [onRelease] - Actions to run on release.
39
+ * @property {Function} [onDissmiss] - Callback when dismissed (dialog pages).
40
+ * @property {Function} [onOk] - Confirm callback (alert dialog).
41
+ * @property {Function} [onPositive] - Positive callback (confirm dialog).
42
+ * @property {Function} [onNegative] - Negative callback (confirm dialog).
43
+ * @property {Function} [onNeutral] - Neutral callback (confirm dialog).
44
+ * @property {Function} [onConfirm] - Confirm callback (prompt/selection/dials dialog).
45
+ * @property {Function} [onAnother] - Another-action callback (selection/dials dialog).
46
+ * @property {Function} [onSelected] - Option selected callback (option dialog).
47
+ * @property {Function} [onSelect] - Item select callback (selection/dials dialog).
48
+ * @property {Function} [resolver] - Promise resolver for programmatic intent completion.
49
+ */
50
+
51
+ /**
52
+ * Back-navigation intent embedded in an EstreIntent.
53
+ * @typedef {Object} EstreIntentBringOnBack
54
+ * @property {string} pid - PID to navigate to on back.
55
+ * @property {string} [hostType] - Host type scope ("component"|"container"|"article").
56
+ */
57
+
58
+ /**
59
+ * Declarative lifecycle action entry within an EstreIntent.
60
+ * @typedef {Object} EstreIntentAction
61
+ * @property {string} from - Host type that triggers this action ("component"|"container"|"article").
62
+ * @property {string} action - Action identifier (e.g. "autoClose", "closePage").
63
+ * @property {boolean} [disabled] - If true, this action is skipped.
64
+ * @property {string} [host] - Target host type for autoClose.
65
+ * @property {number|string} [time] - Delay in ms for autoClose.
66
+ * @property {string} [targetPid] - Target PID for closePage.
67
+ */
68
+
69
+
70
+ /**
71
+ * UI specifier constants — CSS-selector-based UI widget identifier registry.
72
+ * EstreHandle uses these values as specifiers when searching for handles in the DOM.
73
+ * Access via `uis.calendar`, `uis.collapsible`, etc.
74
+ * @type {Object<string, string>}
75
+ */
76
+ const uis = {
77
+ // lottie player //
78
+ dotlottiePlayer: "dotlottie-player",
79
+ dotlottieLoader: "dotlottie-loader",
80
+
81
+ // rim ui //
82
+ prefix: ".prefix",
83
+ suffix: ".suffix",
84
+ divider: ".divider",
85
+
86
+ // component //
87
+ container: ".container",
88
+ rootTabContent: "root_tab_content",
89
+
90
+ // container //
91
+ stepNavigation: ".step_navigation",
92
+ stepTitleBar: ".step_title_bar",
93
+ stepIndicator: ".step_indicator",
94
+ stepPointer: ".step_pointer",
95
+ stepDivider: ".step_divider",
96
+
97
+ // session manager //
98
+ pageShortCut: ".page_short_cut",
99
+
100
+ // common
101
+ section: "section",
102
+ toggle: ".toggle",
103
+ toggleArea: "div.toggle",
104
+ toggleBtn: "button.toggle",
105
+ basic: ".basic",
106
+ settings: ".settings",
107
+ settingsPanel: ".settings_panel",
108
+ toSmaller: ".to_smaller",
109
+ toLarger: ".to_larger",
110
+ controlArea: ".control_area",
111
+ areaHandler: ".area_handler",
112
+ areaResizer: ".area_resizer",
113
+ placeholder: ".placeholder",
114
+
115
+ // unified calendar
116
+ unifiedCalendar: ".unified_calendar",
117
+ calendarArea: "section.calendar_area",
118
+ scheduleList: "section.schedule_list",
119
+
120
+ // variable calendar
121
+ variableCalendar: ".variable_calendar",
122
+ dateIndicateArea: ".date_indicate_area",
123
+ dateIndicator: ".date_indicator",
124
+
125
+ calendarStructure: ".calendar_structure",
126
+ unicalShowToday: "input#unicalShowToday",
127
+
128
+ calendarBar: ".calendar_bar",
129
+ scheduleFilter: ".schedule_filter",
130
+ filterFixed: "ul.fixed",
131
+ filterVariable: "ul.variable",
132
+ dataSelection: "ul.data_selection",
133
+
134
+ // unified scheduler
135
+ unifiedScheduler: ".unified_scheduler",
136
+ scheduleHolder: ".schedule_holder",
137
+ scheduleItem: ".schedule_item",
138
+
139
+ // dedicated calendar
140
+ dedicatedCalendar: ".dedicated_calendar",
141
+ calendarBlock: ".calendar_block",
142
+ scheduleBlock: ".schedule_block",
143
+
144
+ // micro calendar
145
+ microCalendar: ".micro_calendar",
146
+ stretchHandle: ".stretch_handle",
147
+ handle: ".handle",
148
+
149
+ // minimal scheduler
150
+ minimalScheduler: ".minimal_scheduler",
151
+ minimalScheduleList: ".schedule_list",
152
+ schedule: ".schedule",
153
+
154
+ // calendar common
155
+ scaler: ".scaler",
156
+ daysSubjects: ".days_subjects",
157
+ daysHolder: ".days_holder",
158
+ years: ".years",
159
+ year: ".year",
160
+ months: ".months",
161
+ month: ".month",
162
+ weeks: ".weeks",
163
+ week: ".week",
164
+ days: ".days",
165
+ day: ".day",
166
+ dday: ".dday",
167
+ today: ".today",
168
+ date: ".date",
169
+ scheduled: ".scheduled",
170
+
171
+
172
+ // scalable
173
+ scalable: ".scalable",
174
+ summary: ".summary",
175
+
176
+ // collapsible
177
+ collapsible: ".collapsible",
178
+ notBasic: ":not(.basic)",
179
+ notBasicAndToggle: ":not(.basic, button.toggle)",
180
+
181
+ // toggle block
182
+ toggleBlock: ".toggle_block",
183
+
184
+ // tab block and toggle tab block
185
+ tabBlock: ".tab_block",
186
+ toggleTabBlock: ".toggle_tab_block",
187
+ titledTabBlock: ".titled_tab_block",
188
+ tabSet: "ul.tab_set",
189
+ slidingSubjectBlock: ".sliding_subject_block",
190
+ tabContentBlocks: ".tab_content_blocks",
191
+
192
+ // scoped tab block
193
+ pageHandle: "button.page_handle",
194
+ infiniteHPager: ".infinite_h_pager",
195
+ boundHost: ".bound_host",
196
+
197
+
198
+ // dynamic section block
199
+ dynamicSectionHost: ".dynamic_section_host",
200
+ dynamicSectionBlock: ".dynamic_section_block",
201
+ hostItem: ".host_item",
202
+ blockItem: ".block_item",
203
+
204
+
205
+ // custom selector bar
206
+ customSelectorBar: ".custom_selector_bar",
207
+
208
+ // month selector bar
209
+ monthSelectorBar: ".month_selector_bar",
210
+
211
+
212
+ // date shower
213
+ dateShower: ".date_shower",
214
+ dateReplacer: ".dete_replacer",
215
+ fullYear: ".full_year",
216
+ year2d: ".year_2d",
217
+ month2d: ".month_2d",
218
+ date2d: ".date_2d",
219
+ paddedMonth: ".padded_month",
220
+ paddedDate: ".padded_date",
221
+ shortDay: ".short_day",
222
+
223
+ // live timestamp
224
+ liveTimestamp: "[data-live-timestamp]",
225
+
226
+
227
+ // on click set text
228
+ onClickSetText: "[data-on-click-set-text]",
229
+
230
+ // on click set html
231
+ onClickSetHtml: "[data-on-click-set-html]",
232
+
233
+
234
+ // help alert
235
+ dataHelpAlert: "[data-help-alert]",
236
+
237
+ // num keypad
238
+ numKeypad: ".num_keypad",
239
+
240
+ // checkbox set
241
+ checkboxSet: ".checkbox_set",
242
+
243
+ // checkbox ally
244
+ checkboxAlly: ".checkbox_ally",
245
+
246
+ // toaster slot
247
+ toasterSlot: ".toaster_slot",
248
+
249
+ // multi dial slot
250
+ multiDialSlot: ".multi_dial_slot",
251
+ dialHolder: ".dialHolder",
252
+ dialBound: ".dial_bound",
253
+ dialHost: ".dial_host",
254
+
255
+
256
+ // exported content
257
+ exportedContent: ".exported_content",
258
+
259
+
260
+ // quick transitions
261
+ ezHidable: ".ez_hidable",
262
+ fixedAccess: ".fixed_access",
263
+
264
+
265
+ // swipe handler
266
+ allowSwipe: ".allow_swipe",
267
+ blockSwipe: ".block_swipe",
268
+ blockSwipeFilter: "*:not(.block_swipe)",
269
+
270
+
271
+
272
+ // data related using //
273
+
274
+
275
+ eoo: eoo
276
+ };
277
+
278
+ /**
279
+ * Element data specifier constants — `data-*` attribute name registry.
280
+ * Used to reference DOM data attributes in Active Struct bindings, page manager, handles, etc.
281
+ * Access via `eds.bind`, `eds.active`, `eds.exported`, etc.
282
+ * @type {Object<string, string>}
283
+ */
284
+ const eds = {
285
+ // for rim ui
286
+ onReady: "data-on-ready",
287
+ opened: "data-opened",
288
+ tabId: "data-tab-id",
289
+ active: "data-active",
290
+ onTop: "data-on-top",
291
+ static: "data-static",
292
+ exported: "data-exported",
293
+ multiInstance: "data-multi-instance",
294
+ instanceOrigin: "data-instance-origin",
295
+
296
+ // for bind data
297
+ index: "data-index",
298
+
299
+ // for container
300
+ articleStepsId: "data-article-steps-id",
301
+
302
+ // for article
303
+ wideDynamicSection: "data-wide-dynamic-section",
304
+
305
+ // for page manager
306
+
307
+ // for session manager
308
+ containerType: "data-container-type",
309
+ containerId: "data-container-id",
310
+ articleId: "data-article-id",
311
+
312
+ // for page handle
313
+ appbarLeft: "data-appbar-left",
314
+ appbarCenter: "data-appbar-center",
315
+ appbarRight: "data-appbar-right",
316
+ bind: "data-bind",
317
+ bindAmount: "data-bind-amount",
318
+ bindValue: "data-bind-value",
319
+ bindAttr: "data-bind-attr",
320
+ bindStyle: "data-bind-style",
321
+ bindArray: "data-bind-array",
322
+ bindArrayItem: "data-bind-array-item",
323
+ bindArrayAmount: "data-bind-array-amount",
324
+ bindArrayValue: "data-bind-array-value",
325
+ bindArrayAttr: "data-bind-array-attr",
326
+ bindArrayStyle: "data-bind-array-style",
327
+ bindArrayIndex: "data-bind-array-index",
328
+ bindArrayIndexAmount: "data-bind-array-index-amount",
329
+ bindArrayIndexValue: "data-bind-array-index-value",
330
+ bindArrayIndexAttr: "data-bind-array-index-attr",
331
+ bindObjectArrayItem: "data-bind-object-array-item",
332
+ bindObjectArrayAmount: "data-bind-object-array-amount",
333
+ bindObjectArrayValue: "data-bind-object-array-value",
334
+ bindObjectArrayAttr: "data-bind-object-array-attr",
335
+ bindObjectArrayStyle: "data-bind-object-array-style",
336
+ showOnExists: "data-show-on-exists",
337
+ showOnNotExists: "data-show-on-not-exists",
338
+ showOnEquals: "data-show-on-equals",
339
+ showOnExistsObjectArrayItem: "data-show-on-exists-object-array-item",
340
+ showOnNotExistsObjectArrayItem: "data-show-on-not-exists-object-array-item",
341
+ showOnEqualsObjectArrayItem: "data-show-on-equals-object-array-item",
342
+
343
+ frozenPlaceholder: "data-frozen-placeholder",
344
+ frozenItem: "data-frozen-item",
345
+
346
+ // for handle
347
+ handle: "data-handle",
348
+
349
+ // for estre ui attribute
350
+ lead: "data-lead",
351
+ trail: "data-trail",
352
+ prefix: "data-prefix",
353
+ suffix: "data-suffix",
354
+ fore: "data-fore",
355
+ hind: "data-hind",
356
+ nose: "data-nose",
357
+ tail: "data-tail",
358
+ hat: "data-hat",
359
+ shoe: "data-shoe",
360
+
361
+ // for common
362
+ id: "data-id",
363
+ size: "data-size",
364
+ count: "data-count",
365
+ contained: "data-contained",
366
+ noTransition: "data-no-transition",
367
+ year: "data-year",
368
+ month: "data-month",
369
+ adjoin: "data-adjoin",
370
+ adjoinYear: "data-adjoin-year",
371
+ adjoinMonth: "data-adjoin-month",
372
+ adjoinWeek: "data-adjoin-week",
373
+ week: "data-week",
374
+ day: "data-day",
375
+ date: "data-date",
376
+ holiday: "data-holiday",
377
+ dateY: "data-date-y",
378
+ dateM: "data-date-m",
379
+ dateD: "data-date-d",
380
+ today: "data-today",
381
+ selected: "data-selected",
382
+ category: "data-category",
383
+ group: "data-group",
384
+ origin: "data-origin",
385
+ selection: "data-selection",
386
+ slide: "data-slide",
387
+ subject: "data-subject",
388
+ type: "data-type",
389
+ transition: "data-transition",
390
+ satisfy: "data-satisfy",
391
+ show: "data-show",
392
+ showing: "data-showing",
393
+ length: "data-length",
394
+ title: "data-title",
395
+ for: "data-for",
396
+ name: "data-name",
397
+ ally: "data-ally",
398
+ current: "data-current",
399
+ autoInit: "data-auto-init",
400
+ placeholder: "data-placeholder",
401
+ options: "data-options",
402
+ code: "data-code",
403
+ value: "data-value",
404
+ align: "data-align",
405
+ initial: "data-initial",
406
+ intersectionRootMargin: "data-intersection-root-margin",
407
+ intersectionThreshold: "data-intersection-threshold",
408
+
409
+ // message datas
410
+ messageOnNoSelection: "data-message-on-no-selection",
411
+ messageOnLoading: "data-message-on-loading",
412
+ messageOnNoData: "data-message-on-no-data",
413
+
414
+ // body global switch
415
+ onResizing: "data-on-resizing",
416
+ onMoving: "data-on-moving",
417
+ notAllowed: "data-not-allowed",
418
+
419
+ // for component
420
+ focusOnBring: "data-focus-on-bring",
421
+
422
+ // for unified calendar
423
+ fitCalendar: "data-fit-calendar",
424
+ scaleOverride: "data-scale-override",
425
+
426
+ // for variable calendar
427
+ structureType: "data-structure-type",
428
+ showSchedulePrefix: "data-show-schedule-",
429
+ /** @type {function(string): string} Generates origin-specific schedule attribute name. */
430
+ currentScheduleOrigin: (origin) => "data-current-schedule-" + origin + "-origin",
431
+ currentScheduleBasicOrigin: "data-current-schedule-basic-origin",
432
+ currentScheduleDataOrigin: "data-current-schedule-data-origin",
433
+ scale: "data-scale",
434
+ scaleId: "data-scale-id",
435
+ scaleSelected: "data-scale-selected",
436
+ beginScale: "data-begin-scale",
437
+ showToday: "data-show-today",
438
+ loaded: "data-loaded",
439
+ scheduleUnit: "data-schedule-unit",
440
+
441
+ // for calendar structure
442
+ todayYear: "data-today-y",
443
+ todayMonth: "data-today-m",
444
+ todayWeek: "data-today-w",
445
+ todayDay: "data-today-d",
446
+ focusYear: "data-focus-y",
447
+ focusMonth: "data-focus-m",
448
+ focusWeek: "data-focus-w",
449
+ focusDay: "data-focus-d",
450
+ boundYear: "data-bound-y",
451
+ boundMonth: "data-bound-m",
452
+ boundWeek: "data-bound-w",
453
+ hideWeekage: "data-hide-weekage",
454
+ hideWeekend: "data-hide-weekend",
455
+
456
+ // for scheduler
457
+ preload: "data-preload",
458
+ division: "data-division",
459
+ dateId: "data-date-id",
460
+ scheduleId: "data-schedule-id",
461
+
462
+ // for scelable
463
+ lookScale: "data-look-scale",
464
+ maxScale: "data-max-scale",
465
+
466
+ // for collapsible & toggle blocks
467
+ collapsed: "data-collapsed",
468
+ contentCollapsed: "data-content-collapsed",
469
+
470
+ // for toggle tab block
471
+ beginTab: "data-begin-tab",
472
+ tabSelected: "data-tab-selected",
473
+
474
+ // for scoped tab block
475
+ scope: "data-scope",
476
+ direction: "data-direction",
477
+ bound: "data-bound",
478
+ pageSelected: "data-page-selected",
479
+
480
+
481
+ // for checkbox set
482
+ checkboxSelection: "data-checkbox-selection",
483
+
484
+ // for toaster slot
485
+ toast: "data-toast",
486
+ customToast: "data-custom-toast",
487
+ toastTitle: "data-toast-title",
488
+ toastMessage: "data-toast-message",
489
+
490
+
491
+ // for date shower
492
+ dateFrom: "data-date-from",
493
+ withPrefix: "data-with-prefix",
494
+ withSuffix: "data-with-suffix",
495
+
496
+ // for live timestamp
497
+ liveTimestamp: "data-live-timestamp",
498
+ shortSuffix: "data-short-suffix",
499
+
500
+
501
+ // for on click set text
502
+ onClickSetText: "data-on-click-set-text",
503
+
504
+ // for on click set html
505
+ onClickSetHtml: "data-on-click-set-html",
506
+
507
+
508
+ // for month selector bar
509
+ dropdownOpen: "data-dropdown-open",
510
+ showFuture: "data-show-future",
511
+ usePopupSelector: "data-use-popup-selector",
512
+
513
+
514
+ // multi dial slot
515
+ itemTable: "data-item-table", // [['item1', 'item2', 'item3', ...], ['item1', 'item2', 'item3', ...], ...]
516
+ itemAligns: "data-item-aligns", // [t, n, f, ...] :: f: left, n: center, t: right
517
+ itemPrefixes: "data-item-prefixes", // ['prefix1', 'prefix2', ...]
518
+ itemSuffixes: "data-item-suffixes", // ['suffix1', 'suffix2', ...]
519
+ itemDividers: "data-item-dividers", // ['before', 'dividerForAll', 'after'] / ['divider0', 'divider1', ...]
520
+
521
+
522
+ // for solid point
523
+ solid: "data-solid",
524
+
525
+ // for internal link and page link
526
+ openTarget: "data-open-target",
527
+ openContainer: "data-open-container",
528
+ openId: "data-open-id",
529
+ openPage: "data-open-page",
530
+ showPage: "data-show-page",
531
+ closePage: "data-close-page",
532
+ openAction: "data-open-action",
533
+ openBringOnBack: "data-open-bring-on-back",
534
+ openData: "data-open-data",
535
+ showAction: "data-show-action",
536
+ showBringOnBack: "data-show-bring-on-back",
537
+ showData: "data-show-data",
538
+
539
+
540
+ // for swipe handler
541
+ onSwipe: "data-on-swipe",
542
+ onGrab: "data-on-grab",
543
+
544
+
545
+ // data related using //
546
+ // common
547
+ registered: "data-registered",
548
+
549
+
550
+ eoo: eoo
551
+ }
552
+
553
+
554
+
555
+ // ======================================================================